我找到了以下代码:
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而不返回吗?
答案 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()方法,那么文档会声明它是用于附加事件侦听器的,但在您给出的示例中,它使用了上面的解释。