使用_.bind
与使用this
的本地引用相比有优势或不同吗?
这是一个非常简化的示例:doAdd
是需要在父对象上生成属性的本地函数的示例;它最终作为doSomethingThenCallback
内的回调函数运行。选项A与选项B:
var obj = {
num: 1,
// Option A
add_A: function() {
function doAdd(){
this.num++;
}
// Make the "this" in the function refer to the parent object
doAdd = _.bind(doAdd, this);
doSomethingThenCallback(doAdd);
},
// Option B
add_B: function() {
// Save a local reference to "this"
var o = this;
function doAdd(){
o.num++;
}
doSomethingThenCallback(doAdd);
}
}