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));
}
据我了解,这是函数链,是吗?这是一个例子,据我了解,为了使用链,我们 nete 前一个函数来返回一些东西。我的意思是
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
不是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/
.bind(
是Function
对象的一种方法,它有效地做到了这一点:
function bind(that) {
var self = this;
return function () {
return self.apply(that, arguments);
};
}
看到.bind(
返回一个函数,该函数在调用时将给定的参数应用于使用先前给定this
调用.bind(
的函数。
.
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()方法,文档声明它是用来附加事件侦听器的,但在你给出的示例中,它使用了上面的解释。
相关文章:
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- Jquery:将函数绑定到已绑定元素的点击事件
- 我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- 为什么当我尝试将函数绑定到自身时,“this”对象仍然引用窗口
- 如何将函数绑定到使用链接函数创建 HTML 的角度指令
- 将jquery函数绑定到事件
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 使用闭包/函数绑定将自函数作为回调传递
- 如何在 Javascript 中将函数绑定到对象数据成员的更改
- 需要将内部函数绑定到元素的单击事件
- 在Javascript中将对象原型函数绑定到对象
- 将函数绑定到Twitter Bootstrap Modal Ajax Complete
- ng使用一个不识别临时变量形式ng repeat的函数绑定html
- 将函数绑定到baz后调用fn.apply(bar,[])
- 将函数绑定到采用参数的不同事件
- 如何将返回函数绑定到标记角度
- 在IE9中未检测到视图模型函数绑定,但在FF和Chrome中有效
- 如何将函数绑定到ShadowDOM内部的元素
- 将原型函数绑定到此的方式不那么冗长