在Javascript中修改循环函数的参数

时间:2013-11-20 10:20:15

标签: 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参数已经改变。

2 个答案:

答案 0 :(得分:0)

你搞砸了这里的背景。在某个变量中缓存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);

Fiddle

答案 1 :(得分:0)

使用绑定方法的解决方案:

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

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