jQuery $.map vs $.fn.map不同的参数

前端之家收集整理的这篇文章主要介绍了jQuery $.map vs $.fn.map不同的参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是想知道是否有人知道为什么$.map和$.fn.map以翻转的顺序传递参数.是否有正当理由(例如某处的ECMA规范)或者它是否只是一个计划不周的API,由于依赖于jQuery的代码量,现在无法修复?
$.map([ 'a','b','c' ],function(){ console.log(arguments); })
// ['a',0],['b',1],['c',2]

$.fn.map.call([ 'a',function(){ console.log(arguments); })
// [0,'a'],[1,'b'],[2,'c']

.each不是这样的

解决方法

这是我完全和完全投机的“答案”.

jQuery.each(),. double()和jQuery.map()都存在于版本1中.

.map()在1.2中添加.

我的猜测是他们根本没有考虑让每个方法遵循规范中的forEach. (无论如何,当时ES 5的状态是什么?)但由于某种原因,他们确实更接近$.map()的规范. (也许它的初衷主要是内部使用.)

因此,当jQuery 1.2出现时,他们认为有一个.map()方法会很好.

所以他们面临的问题是让.map()遵循$.each()和.each(),或者遵循$.map().

因为.each()特别是已经被实现为对jQuery对象可调用,所以他们认为使.map()跟随.each()比使用$.map()更加困惑.用得不多.

查看the .map() method vs the .each() method的源代码,可以看到.map()需要一个中间函数来翻转参数并设置该值.不知怎的,我怀疑如果他们事先计划好了,他们本来想要这样做.

同样,这是完全和完全的猜测,但如果发生类似的事情,我不会感到惊讶.

要么接受,要么离开它. ; O)

猜你在找的jQuery相关文章