与 Python 之类的语言不同,Javascript 方法在您提取它并将其传递到其他地方后会忘记它是一个方法。你可以
将方法调用包装在匿名函数中
这样,访问baz
属性和调用它是同时发生的,这对于this
在方法调用中正确设置是必要的。
您需要将this
来自外部函数的保存在辅助变量中,因为内部函数将引用不同的this
对象。
var that = this;
setInterval(function(){
return that.baz();
}, 1000);
将方法调用包裹在一个粗箭头函数中
在实现箭头函数功能的Javascript 实现中,可以使用粗箭头语法以更简洁的方式编写上述解决方案:
setInterval( () => this.baz(), 1000 );
胖箭头匿名函数保留了this
来自周围函数的信息,因此无需使用该var that = this
技巧。要查看您是否可以使用此功能,请查阅像这样的兼容性表。
使用绑定函数
最后一种选择是使用函数,例如 Function.prototype.bind 或您最喜欢的 Javascript 库中的等效函数。
setInterval( this.baz.bind(this), 1000 );
//dojo toolkit example:
setInterval( dojo.hitch(this, 'baz'), 100);