javascript - 将变量从对象内部传递到 setTimeout

标签 javascript architecture

我在将变量从对象内部传递到 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 不再绑定(bind)到 MyObj。你可以试试

function MyObj() {
    var that = this;
    this.foo = 10;
    this.foo = 20;
    this.duration = 1000;

    setTimeout(function(){AnotherFunction(that.foo, that.bar)}, this.duration);
}

或者我确实还有一个想法应该行不通。

关于javascript - 将变量从对象内部传递到 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754621/

相关文章:

windows - 如何使用 npm 在 64 位系统上构建 32 位二进制文​​件?

database-design - 减少数据库设计中的重复信息

寻找与 Java EE 架构相当的解决方案的 PHP 开发人员

javascript - 匿名函数声明简写javascript

javascript - 如何在季度日期选择器中启用初始值突出显示

javascript - 如何从 Controller 的 "<select></select>" View 中获取 "ActionResult"的值?

javascript - 从文件夹中读取 txt 文件的数据,并使用浏览按钮使用 javascript 填充文本框

php - 如何创建动态(支持自定义字段)SaaS 应用程序?

javascript向函数添加属性

ios - 多个具有相同证书的APNS提供商