我试图通过执行以下操作来维护对象的状态:
obj = function() {
this.foo = undefined;
this.changeState = function () {
(function () { this.foo = "bar" })(); // This is contrived, but same idea.
};
};
当我调用changeState方法时,我想将实例变量foo设置为“bar”。
例如:
o = new obj();
o.changeState();
alert(o.foo); // This should say "bar"
据我所知,正在发生的事情是内部匿名函数中的“this”指向 window.我不确定发生了什么事。
我走在正确的轨道上吗?有更好的方法吗?
这个话题经常出现,但很难搜索,因为“this”已从 SO 搜索中删除。
基本上,在 JavaScript 中,this
始终引用调用对象,而不是上下文对象。由于这里我们从全局范围调用 o.changeState(),this
指窗户。
实际上,在这种情况下,您不需要闭包的内部函数来工作 -changeState
函数本身足以关闭词法作用域。
obj = function()
{
var self = this;
this.foo = undefined;
this.changeState = function()
{
self.foo = "bar";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)