JS:绑定和函数链接

时间:2014-12-16 17:36:19

标签: javascript

我找到了以下代码:

  this.element.click((function() {
    // some logic
  }).bind(this));

here是另一个例子:

render: function () {
    this.getAsyncData(function () {
        this.specialFunction();
        this.anotherSpecialFunction();
    }.bind(this));
}

据我所知它是功能链,是吗? Here是一个例子,正如我所理解的那样,为了使用链,我们会让前一个函数返回一些东西。我的意思是

var gmap = function() {
    this.add = function() {
        alert('add');
    return this; //HERE WE RETURN
    }

    this.del = function() {
       alert('delete');
       return this; //HERE WE RETURN
    }
}

var test = new gmap();
test.add().del();

你能解释一下如何在前一个函数中返回bind而不返回吗?

3 个答案:

答案 0 :(得分:2)

在这种情况下,

bind不是jQuery的事件绑定器。它设置了点击处理程序中this的内容。

function Cat() {
  this.name = 'Gordon';
  this.element = $('#someEl');

  this.element.click((function() {
    console.log(this.name);  // logs Gordon
  }).bind(this));
}

我们将this绑定到Cat,以便我们可以使用Cat的属性,例如name。 所以这与链接没有关系..

MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind 小提琴:http://jsfiddle.net/c4phfs8s/

答案 1 :(得分:1)

.bind(Function对象的一种方法,可以有效地执行此操作:

function bind(that) {
  var self = this;
  return function () { 
     return self.apply(that, arguments); 
  };
}

看到.bind(返回一个函数,该函数在被调用时将给定的参数应用于使用先前给定的.bind(调用this的函数。

答案 2 :(得分:0)

.bind()允许你将一个对象绑定到一个函数,这样如果你在函数'this'中使用关键字'this'就是那个对象

function test () {
this.a = 'hello';
this.b = 'world';
}
var callNewTest = new test;
(function test2 () {
console.log(this, this.a, this.b)
}).bind(callNewTest)

如果您正在讨论jQuery的.bind()方法,那么文档会声明它是用于附加事件侦听器的,但在您给出的示例中,它使用了上面的解释。