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;
答案 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
没有任何优势。