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非常感谢你们。你们尽了最大努力来帮助我,我非常感谢你们。在外面很难找到尽全力帮助我的人。我真的很感激。谢谢!