jQuery在同一个调用中使用on和bind

时间:2017-12-22 09:00:25

标签: javascript jquery

我遇到了这段代码并且不确定它是如何工作的:

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方法。

我不明白的是,为什么有人会这样编程呢。

1 个答案:

答案 0 :(得分:3)

这不是jQuery' bind

function.prototype.bindhttps://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