如何将后代函数绑定到顶级父对象?

时间:2014-05-24 17:29:31

标签: javascript node.js bind

this.site在我的示例中未定义。

如果我不使用.bind(),它引用.next(其父级),而不是顶级对象。无论如何要让this始终引用顶级对象exports

var exports = {
    site: site,
    results: {
        next: function($){
            debugger;
            console.log('Site: ', this.site);
            return this.site + $('.foo').attr('href');
        }.bind(exports),
    }
};

module.exports = exports;

1 个答案:

答案 0 :(得分:2)

您当时不能使用.bind,因为该对象仍在构建且exports尚未拥有值(或者至少不是您想要的值) 。您必须在创建对象后绑定函数。即

exports.results.next.bind(exports);

或者您稍微重构代码并使用现有的exports对象:

exports.site = site,
exports.results = {
    next: function($){
        debugger;
        console.log('Site: ', this.site);
        return this.site + $('.foo').attr('href');
    }.bind(exports),
};

或者您只需使用exports代替this,例如adeneo mentioned。在您的案例中使用this优于exports没有任何优势。