Javascript:构造函数中的回调

sai*_*lle 5 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();

});?
Run Code Online (Sandbox Code Playgroud)

jsFiddle 我在这里缺少什么?

Ada*_*kis 7

这应该是一个简单的解决方案.首先,确保在将this对象设置为当前对象的情况下调用回调

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

    callback.call(this);
};
Run Code Online (Sandbox Code Playgroud)

然后调整你的回调方式

var f = new foo(function() {
    this.doStuff();
});?
Run Code Online (Sandbox Code Playgroud)

这是你的更新小提琴