对JavaScript的'this'对象和'var'声明的变量感到困惑

时间:2013-01-25 17:32:21

标签: javascript

我对JavaScript的this对象感到有点困惑。

var contextTest = function() {
    var x = 0;
}

var test = new contextTest;
console.log(test.x); // produces undefined

上面和函数内的this.x = 0;之间有什么区别?

我一直认为声明这样的变量会将变量绑定到范围。

1 个答案:

答案 0 :(得分:1)

声明:

var x = 0;

只需在您所在的任何函数范围内创建局部变量。

该变量仅存在于该函数或函数闭包的生命周期中。这种类型的声明永远不会将此变量作为属性绑定到对象。为此,您必须在this.x = 0;

中为对象的属性显式指定值

如果使用导致函数闭包的构造(在代码中有),则局部变量的值将作为可私有访问的变量存在于函数闭包中,只能从该特定函数中访问特定的背景。它将在某些方面表现得像对象的私有实例变量。但是,它不是对象的属性,您不能通过this或对象的任何其他引用来引用它。您只能从声明它的函数中引用它。