簡體   English   中英

在JavaScript中修改循環函數的參數

[英]Modifying the parameter of a looped function in Javascript

我在使此JSFiddle正常工作時遇到問題:

http://jsfiddle.net/y45jN/

var mainFunction = function() {
  this.text;
}

mainFunction.prototype.start = function(printText) {

  this.text = printText;

  var func = function() {
    document.getElementById('test').innerHTML += this.text + '<br/>';
  };

  setInterval(func,1000);

}

mainFunction.prototype.updateText = function(printText) {

  this.text = printText;

}

var test = new mainFunction();
test.start('hello');

setTimeout(function(){
  test.updateText('bye');
},5000);

我想做的是在開始的5秒內打個招呼,然后在5秒后打個再見。

我不確定如何使函數(func)知道該類的this.text參數已更改。

您已經弄亂了這里的上下文。 高速緩存this在一些變量,並使用它的時間間隔內(或使用bind ):

    this.text = printText;
    var self = this;

    var func = function() {
        document.getElementById('test').innerHTML += self.text + '<br/>';
    };

然后,只需修改實例的屬性text

setTimeout(function(){
    test.text = 'bye';
},5000);

小提琴

使用綁定方法的解決方案:

setInterval(func.bind(this),1000);

http://jsfiddle.net/y45jN/5/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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