Javascript:构造函数中的回调

标签 javascript design-patterns

我正在尝试为一个对象编写 OO javascript,该对象具有昂贵的初始化过程,完成后会回调一个函数。

问题在于调用者需要在回调例程中使用同一对象的函数,而该对象尚不存在:

// ctor for foo object
function foo(callback) {

    // do slow initialization here..

    // callback when done
    callback();
};

foo.prototype = function() {

    return {
        // doStuff method
        doStuff: function() {
          alert('stuff done');
        }
    };        
}();

// instantiate the foo object, passing in the callback
var f = new foo(function() {

    //Uncaught TypeError: Cannot call method 'doStuff' of undefined 
    f.doStuff();

});​

jsFiddle 我在这里缺少什么?

最佳答案

这应该是一个简单的修复。首先,确保调用回调时将 this 对象设置为当前对象

function foo(callback) {
    // do slow initialization here..

    callback.call(this);
};

然后调整你的回调方式

var f = new foo(function() {
    this.doStuff();
});​

这是你的 updated fiddle

关于Javascript:构造函数中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999951/

相关文章:

javascript - 无限滚动javascript未运行

javascript - ionic : Master Detail with tabs and side menu navigation issue?

c++ - 如何销毁单例实例,或者为什么以下代码适用于析构函数?

design-patterns - mixin 被认为是一种设计模式吗?

javascript - 高级 JavaScript 指导

javascript - PIE CHART - 使用 DataTables 和 Highcharts 进行数据可视化

javascript - 如何使复选框只读

javascript - 无需重新加载页面的数组中的 PHP 随机值

java - 使用设计模式会使 Java 代码变慢吗?

design-patterns - ServiceStack + ORMLite + 存储库模式