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