1

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

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

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

上面和函数内部有什么区别this.x = 0;

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

4

1 回答 1

1

声明:

var x = 0;

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

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

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

于 2013-01-25T17:38:11.557 回答