【发布时间】:2015-11-19 13:15:37
【问题描述】:
所以采取以下简单的javascript类sn-p:
var Class = function() {
this.publicvar = 1;
this.privileged = function() {
return this.publicvar;
};
};
var c = new Class();
setTimeout(c.privileged, 1); //c.this -> window
显然这不起作用,“this”将是窗口对象。所以此时我们可以做一个 var that=this,并使用 that.publicvar,或者,我们可以这样做。
setTimeout(function() { c.privileged() }, 1); //c.this -> Class
多么棒的解决方案和简单的解决方法,现在我不必在课堂上到处乱写“那个”了。更不用说,在使用 object.prototype.publicMethod 时,使用“that”会变得更加复杂。
所以,我的问题是:还有哪些其他情况需要您担心“this.publicvar”中的“this”被绑定到窗口上下文,每种情况的解决方案是什么? (我希望我们为每一个都有一个解决方案,所以我永远不必使用它!:)
【问题讨论】:
标签: javascript closures this settimeout javascript-objects