正确使用Bind的方法

时间:2014-07-07 18:18:53

标签: javascript ajax

使用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
    }
};

1 个答案:

答案 0 :(得分:0)

当您需要一个函数的新实例时,请使用bind,其this值明确设置为您通过bind()调用传入的内容。

  

ECMAScript 5定义了另一个名为bind()的方法。 bind()方法创建一个新值的函数实例   绑定到传递给bind()的值。   (Zakas,面向Web开发人员的专业JavaScript,第3版。,146)。

主要优势似乎是使用bind()代替闭包,其中多个闭包会使代码难以阅读。见第738"功能绑定"在扎卡斯更多。简而言之,

  

函数绑定涉及创建一个调用另一个函数的函数   具有特定值和特定参数的函数。这个   技术通常与回调和事件一起使用   处理程序在传递函数时保留代码执行上下文   作为变量。   (Zakas,738)

     只要必须传递函数指针,

绑定函数就很有用   作为一个值,该函数需要在特定的情况下执行   上下文。它们最常用于事件处理程序和   setTimeout()和setInterval()。但是,绑定函数有更多   比常规函数开销 - 它们需要更多内存   由于多个函数调用稍微慢一点 - 所以最好   仅在必要时使用它们。   (Zakas,740-41)