一些基本javascript的问题
我在一些基本javascript方面遇到了一些问题:一些基本javascript的问题,javascript,Javascript,我在一些基本javascript方面遇到了一些问题: function tank(){ this.width = 50; this.length = 70; } function Person(job) { this.job = job; this.married = true; } var tank1 = tank(); console.log(tank1.length); //returns: Uncaught TypeError: Cannot read
function tank(){
this.width = 50;
this.length = 70;
}
function Person(job) {
this.job = job;
this.married = true;
}
var tank1 = tank();
console.log(tank1.length); //returns: Uncaught TypeError: Cannot read property 'length' of undefined
var gabby = new Person("student");
console.log(gabby.married); //returns: true
第一个console.log不起作用,但第二个console.log起作用。我是一个javascript初学者,我不知道为什么长度属性是未定义的。有什么帮助吗?您错过了
new
关键字:
var tank1 = new tank();
执行tank()时,函数的执行上下文是窗口
对象。您要做的是将“宽度”和“长度”字段添加到窗口对象,如果在调用tank()
之后执行window.length
和window.width
,则可以看到这一点。您应该看到值70和50。由于tank
函数不返回值,因此语句var tank1=tank()代码>有效地将tank1
设置为undefined
,因此会出现错误
在第二条语句中,您正在调用Person
构造函数,因此在执行函数Person(job){…}
时,此
是对您正在创建的Person
对象的引用。new
语句执行以下操作:
创建Person
对象
调用构造函数“函数Person(…)
”,将this
设置为对它刚刚创建的对象的引用
函数返回后,将新的Person
对象返回给调用方
有关执行上下文的更多信息,请参阅