我对 JavaScript 的this
对象有点困惑。
var contextTest = function() {
var x = 0;
}
var test = new contextTest;
console.log(test.x); // produces undefined
上面和函数内部有什么区别this.x = 0;
?
我一直认为声明这样的变量会将变量绑定到范围。
我对 JavaScript 的this
对象有点困惑。
var contextTest = function() {
var x = 0;
}
var test = new contextTest;
console.log(test.x); // produces undefined
上面和函数内部有什么区别this.x = 0;
?
我一直认为声明这样的变量会将变量绑定到范围。
声明:
var x = 0;
只需在您所在的任何函数范围内创建一个局部变量。
该变量仅在该函数或函数闭包的生命周期内存在。这种类型的声明永远不会将此变量作为属性绑定到对象。为此,您必须明确地为对象的属性赋值,如this.x = 0;
.
如果您使用导致函数闭包持续存在的构造(您在代码中拥有该构造),则局部变量的值将作为私有可访问变量存在于函数闭包中,只能从该特定上下文中的该特定函数访问. 它会在某些方面表现得像对象的私有实例变量。但是,它不是对象的属性,您不能通过this
或任何其他对对象的引用来引用它。您只能从声明它的函数中引用它。