JS: 在回调中找到object的函数

js object中定义的函数可以用this.foobar来调用,但是如果函数中有回调,那么在回调中就找不到了,具体原因我没看,猜测是this被自动更新到新的scope中去了,所以解决方法就是在this被更新前存一份,大概这样(代码手写,没测试,明白个意思就好):

foobar.prototype.foo = function foo() {
    console.log('This is foo');
}

foobar.prototype.bar = function bar() {
    this.foo();  // This is foo
    var myself = this;

    otherModule.callAsync(function(callback) {
        // this.foo();  - This raise error
        myself.foo(); // This is foo
    });
}

module.exports = foobar;

你可能感兴趣的:(JS: 在回调中找到object的函数)