繁体   English   中英

JS:绑定和函数链接

[英]JS: bind and function chaining

我找到了以下代码:

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

是另一个例子:

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

据我所知它是功能链,是吗? 是一个例子,据我所知,为了使用链,我们需要让前一个函数返回一些东西。 我的意思是

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在前一个函数中如何不返回吗?

在这种情况下, 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 Fiddle: http//jsfiddle.net/c4phfs8s/

.bind(是一个有效执行此操作的Function对象的方法:

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

看到.bind(返回一个函数调用应用给定参数的功能时.bind(被称为与之前给出的this

.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()方法,那么文档会声明它是用于附加事件侦听器的,但在您给出的示例中,它使用了上面的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM