JavaScript SetInterval范围问题:绑定的替代方案
2013-10-02
2364
我刚刚用 bind 方法纠正了我的 JavaScript 类中的一个范围问题,该方法将 setInterval 调用的函数放在了正确的范围内。但似乎 bind 出现得太早了(我认为是 1.8.4),我担心浏览器兼容性。
还有其他较旧的替代方案吗?我应该忘记旧浏览器吗?
示例:
function MyClass(SomeText){
this.text = SomeText;
}
MyClass.prototype.test = function(){
console.log("The text: "+this.text);
}
MyClass.prototype.initialize = function(){
setInterval(this.test.bind(this), 1000);
}
var Test = new MyClass("my thoughts");
Test.initialize();
1个回答
另一种选择是使用老式的闭包:
MyClass.prototype.initialize = function(){
var myClassInstance = this;
setInterval(function() {
myClassInstance.test()
}, 1000);
}
虽然不太美观,但可以跨浏览器使用。
如果您想要类似 bind 的功能,可以创建自己的函数来执行此操作,或者使用
MDN 上的 polyfill
。如果您使用的是 jQuery,则可以使用
$.proxy
,效果相同。
bfavaretto
2013-10-02