因此,下面是我将that
设置为this
的情况的非常简单的示例,因此我可以使用myObj
的范围。我将如何集成Function.prototype.bind,以便我可以看到将来如何使用它?
var myObj = {
specialFunction: function () {
},
anotherSpecialFunction(){
},
getAsyncData: function (cb) {
// an operation
cb();
},
render: function () {
var that = this;
this.getAsyncData(function () {
that.specialFunction();
that.anotherSpecialFunction();
});
}
};
myObj.render();
答案 0 :(得分:2)
只需对所需的方法使用bind并指定上下文
render: function () {
this.getAsyncData(this.specialFunction.bind(this));
}
render: function () {
this.getAsyncData(someFunction.bind(this));
function someFunction() {
this.specialFunction();
this.anotherSpecialFunction();
}
}
答案 1 :(得分:1)
我如何整合Function.prototype.bind
忽略that
,改为使用this
并将函数绑定到实例:
…
render: function () {
this.getAsyncData(function () {
this.specialFunction();
this.anotherSpecialFunction();
}.bind(this));
}
…
这样我才能看到将来如何使用它?
您现在可以使用它。每个体面的浏览器都支持它,如果你真的关心旧的Internet Explorers等,你可以shim it。
答案 2 :(得分:0)
如果您希望this
仍然在传递给myObj
的回调函数中引用getAsyncData
,那么您希望render
函数看起来像这样:
render: function () {
this.getAsyncData((function () {
this.specialFunction();
this.anotherSpecialFunction();
}).bind(this));
}