我遇到了这段代码并且不确定它是如何工作的:
options.on('change', this._onBundleOptionChanged.bind(this));
this._onBundleOptionChanged只是一个带有一个参数的函数,事件:
_onBundleOptionChanged: function onBundleOptionChanged(event) {
jQuery版本是1.12.4。
bind调用返回函数bound()无论这意味着什么,如果bind传递一个参数,它必须是一个对象文档说“包含一个或多个DOM事件类型和函数的对象为它们执行”。在这里:http://api.jquery.com/bind/
因此,当我理解它完成了什么时,在更改选择下拉列表时调用_onBundleOptionChanged方法。
我不明白的是,为什么有人会这样编程呢。
答案 0 :(得分:3)
这不是jQuery' bind
。
是function.prototype.bind
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind)。
它将回调函数的上下文更改为与执行此语句时相同。这非常有用。
在大多数情况下,
this
的值取决于函数的调用方式。它不能在执行期间通过赋值来设置,并且每次调用函数时它可能不同。 ES5引入了bind
方法来设置函数this
的值,无论它是如何调用的,并且ES2015引入了箭头函数,它们不提供自己的this
{ {1}}绑定(它保留了封闭词汇上下文的this
值。)
请参阅:
How to access the correct `this` inside a callback?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this