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

Modifying the parameter of a looped function in Javascript

本文关键字:函数 参数 循环 修改 Javascript      更新时间:2023-09-26

我在让这个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);

Fiddle

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

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

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