在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);
Fiddle
使用绑定方法的解决方案:
setInterval(func.bind(this),1000);
http://jsfiddle.net/y45jN/5/
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数