我什至不知道如何问这个问题,但我已将代码缩减为最简单的示例:
function Handler() {}
Handler.prototype.texts = [];
Handler.prototype.add = function(d) {
this.texts.push(d);
};
Handler.prototype.tick = function() {
console.log( this.texts );
};
var x = new Handler();
setInterval( x.tick, 5000 );
x.add('beatles');
当 setInterval 调用 x.tick 时,它会为 this.texts 提供 undefined 的值——当然还有 for this
。虽然我可以通过
setInterval( x.tick, 5000, x );
// and ... in the prototype
Handler.prototype.tick = function(myObj) {
console.log( myObj.texts );
}
感觉有点笨拙。有一个更好的方法吗?