“这个”访问我在JS初学者,和我通过下面的代码不解:JavaScript的原型,并在关闭
Foo = function(arg) {
this.arg = arg;
};
Foo.prototype = {
init: function() {
var f = function() {
alert("current arg: " + this.arg); // am expecting "bar", got undefined
}
f();
}
};
var yo = Foo("bar");
yo.init();
我有望获得“当前ARG:酒吧”,却得到了“当前arg:undefined“。我注意到,复制this.arg成“正常”的可变第一,并在封闭闯民宅此变量的作用:
Foo.prototype = {
init: function() {
var yo = this.arg;
var f = function() {
alert("current arg: " + yo); }
f();
}
};
上午我做错了什么,得到了错误的预期,或者它落入的一个js WTF?
复制'this.arg'到一个“正常”变量首先不会做任何不同于'this'对你的函数意味着什么。 – bobobobo 2010-11-12 06:02:36
@bobobobo技术上是真的,但是什么时候有人暗示会发生?你说的话可能会引起误解。在第二个例子中,他实际上并没有使用'this';使用局部变量'yo'创建一个闭包,即使在'f'函数内部也能保持对预期对象的引用。 – theazureshadow 2010-11-12 06:09:32