[英]Modifying the parameter of a looped function in Javascript
我在使此JSFiddle正常工作时遇到问题:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.