Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:绑定和函数链接_Javascript - Fatal编程技术网

Javascript JS:绑定和函数链接

Javascript JS:绑定和函数链接,javascript,Javascript,我找到了以下代码: this.element.click((function() { // some logic }).bind(this)); 另一个例子是: render: function () { this.getAsyncData(function () { this.specialFunction(); this.anotherSpecialFunction(); }.bind(this)); } 据我所知,这是功能

我找到了以下代码:

  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的事件绑定器。它设置单击处理程序中将包含的内容

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

  this.element.click((function() {
    console.log(this.name);  // logs Gordon
  }).bind(this));
}
我们将
这个
绑定到
,这样我们就可以使用
的属性,比如
名称
。 因此,这与链接并没有太大关系

MDN: Fiddle:

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

.bind(
函数
对象的一种方法,它有效地执行以下操作:

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

请参见
.bind(
返回一个函数,调用该函数时,该函数将给定的参数应用于
.bind(
是使用先前给定的
调用的)函数。此
不是。
bind
与函数链接(更好地称为)完全无关谢谢你的时间。我不明白。bind是如何获得上一个函数的。上一个函数,
f
say,是方法
f.bind(that)所基于的函数对象
被调用。@PashaTurok前两个代码示例中都没有前面的函数。这些是不同的
.bind
方法,作为链接对象的方法提供。它们不是我相信您正在研究的
函数.prototype.bind
。@JAAulde感谢您的时间和帮助。但是我没有想象Dan D就在这里。它实际上是函数对象的原型。这就是为什么它可以访问“前一个函数”.谢谢你们两位的帮助。@JAAulde非常感谢你们。你们尽了最大努力来帮助我,我非常感谢你们。在外面很难找到尽全力帮助我的人。我真的很感激。谢谢!