[英]JavaScript setInterval scope issue: an alternative to bind
我只是使用綁定方法糾正了我的JavaScript類中的范圍問題,該方法將setInterval調用的函數置於正確的范圍內。 但是它的接縫綁定已經很早了(我認為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();
另一種選擇是良好的封閉:
MyClass.prototype.initialize = function(){
var myClassInstance = this;
setInterval(function() {
myClassInstance.test()
}, 1000);
}
並不是很漂亮,但是可以跨瀏覽器使用。
如果您想綁定類似的東西,可以創建自己的函數來做到這一點,或者使用MDN上的polyfill 。 如果您使用的是jQuery,則可以使用$.proxy
,其作用相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.