使用Bind最正确的方法是什么。我已经像这样使用它并且它正在工作但是有兴趣找到最好的选择
ObjectProcessor = function (pathList) {
this.data = null;
}
ObjectProcessor.prototype = {
callServer: function () {
ajaxObject.Get("api/Path", this.callReceive.bind(this), null, this.callError.bind(this), this.callComplete.bind(this));
},
callReceive: function (source) {
this.data = source;
},
callComplete: function (source) {
// do something
},
callError: function (source) {
// Show Error
}
};
答案 0 :(得分:0)
当您需要一个函数的新实例时,请使用bind
,其this
值明确设置为您通过bind()
调用传入的内容。
ECMAScript 5定义了另一个名为bind()的方法。 bind()方法创建一个新值的函数实例 绑定到传递给bind()的值。 (Zakas,面向Web开发人员的专业JavaScript,第3版。,146)。
主要优势似乎是使用bind()
代替闭包,其中多个闭包会使代码难以阅读。见第738"功能绑定"在扎卡斯更多。简而言之,
函数绑定涉及创建一个调用另一个函数的函数 具有特定值和特定参数的函数。这个 技术通常与回调和事件一起使用 处理程序在传递函数时保留代码执行上下文 作为变量。 (Zakas,738)
只要必须传递函数指针,绑定函数就很有用 作为一个值,该函数需要在特定的情况下执行 上下文。它们最常用于事件处理程序和 setTimeout()和setInterval()。但是,绑定函数有更多 比常规函数开销 - 它们需要更多内存 由于多个函数调用稍微慢一点 - 所以最好 仅在必要时使用它们。 (Zakas,740-41)