簡體   English   中英

JavaScript setInterval范圍問題:綁定的替代方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM