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