有人能解释一下使用.bind()函数的这段代码吗?

5
我在 jQuery 源代码中看到了这段代码(事件处理):
```javascript // Handle events jQuery.event = { global: {}, add: function(elem, types, handler, data, selector) { ... }, remove: function(elem, types, handler, selector, mappedTypes) { ... }, ... }; ```
该代码用于处理事件,其中 `add` 函数用于为元素添加事件监听器,`remove` 函数则用于移除事件监听器。
var events = ['click', 'focus', 'blur', …];
jQuery.each(event,function(i,name){
    jQuery.prototype[name] = function(fn){
        return this.bind(name,fn);
    };
});

有人能解释一下这个吗?this.bind(name,fn);如何与element.addEventListener('event','callback()')相同?

我知道JavaScript的基础知识,但我不知道JavaScript的更高级部分。因为我是自学的,所以我的JavaScript知识中有很多漏洞。如果有人知道一个好的来源,我可以从中学习更高级的JavaScript,我也想听听。


1
你尝试在互联网上搜索了吗?如果没有,请查看此链接。http://api.jquery.com/bind/ - The Hungry Dictator
3
它迭代处理事件,将它们设置为jQuery的属性和原型,然后将新属性设置为引用包装本地JavaScript bind方法的函数。 - adeneo
5
@RonakBhatt,这不是jQuery的.bind方法。那个链接是错误的。 - Fresheyeball
2
请参阅 Function.prototype.bind,该函数是 ES5 的一部分(并且可以在旧版浏览器中使用 shim;我使用 es5-shim.js)。 - user2864740
@Fresheyeball- 那正确的链接是什么? - The Hungry Dictator
1个回答

4
很简单,我们把所有事件放入一个数组中 [click, focus...] ,然后使用 foreach 循环遍历该数组,下一部分代码将一个函数赋值给 jQuery 原型 $.fn.click(),这个函数将成为 $('#me').click(),最后这个 click(); 函数调用了 $.fn.bind();,它稍后会调用 addEventListener(),就是这样。
如果你还在想 addEventListener() 在哪里,阅读 jQuery 中的 bind()

非常感谢,这确实对我有所帮助! :) - Progo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接