[英]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.