将对象内的变量传递到setTimeout
Passing variables from within object into setTimeout
我在将对象内的变量传递到setTimeout
时遇到了一些有趣的问题。起初,我尝试将从setTimeout
调用的函数放在我的对象上,这样我就不必向其中传递任何变量(我希望它可以自己访问我的对象)。这不起作用,显然是因为当我从setTimeout
调用该函数时,它不知何故变成了全局函数,并且不再能够访问对象的变量。
这是我的下一次尝试,但也不起作用:
function MyObj() {
this.foo = 10;
this.bar = 20;
this.duration = 1000;
setTimeout(function(){
AnotherFunction(this.foo, this.bar)
}, this.duration);
}
那么,如何从对象中将变量传递到setTimeout
中呢?不,由于各种不相关的原因,AnotherFunction
将无法直接访问MyObj
,所以这也是不可能的。
我认为问题在于,当您的函数执行时,this
不再绑定到MyObj
。你可以试试
function MyObj() {
var that = this;
this.foo = 10;
this.foo = 20;
this.duration = 1000;
setTimeout(function(){AnotherFunction(that.foo, that.bar)}, this.duration);
}
或者我还有一个想法,如果不起作用的话。
相关文章:
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 被覆盖的 setTimeout 变量中的函数
- nodejs-settimeout是否在不同的循环中共享变量
- toString似乎导致setTimeout不总是为toString的变量参数执行函数
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- 变量在Javascript中是如何工作的?可以在setTimeout期间更改变量值
- Javascript setTimeout作用域引用了错误的变量
- 一旦超时执行,清除或重新分配分配给 setTimeout 返回值的变量是否有任何技术点
- 使用变量作为 setInterval / setTimeout 中的时间
- 如何将变量传递到 setTimeout 函数中
- 为什么这个全局计数器变量不适用于 setTimeout
- JavaScript setTimeout可以't访问函数变量
- 如何在setTimeout中维护循环变量的值?Javascript
- Angular2,视图在settimeout变量更改后未更新
- 将对象内的变量传递到setTimeout
- javascript setTimeout()输出另存为变量
- for循环中的setTimeout,变量不变
- setTimeout似乎正在更改我的变量!为什么?
- setTimeout给了我新的变量,而不是旧的
- 如何从iframe(Javascript)中撤销setTimeout变量