虽然.map()
方法的界面为.map( callback(index, domElement) )
,但$ .map()的$.map( array, callback(elementOfArray, indexInArray) )
...有任何关于$ .map()选择放置的原因以诸如value-index?
答案 0 :(得分:7)
因为API不完善。它开始时不一致,但修复现在会破坏使用$.map()
的现有代码。
答案 1 :(得分:2)
如果您研究jQuery API,您会注意到所有处理一组选定元素并接受回调的方法,例如.each
,.html
,.text
等, all将元素的索引作为第一个参数传递,即.map
在这里排成一行。通常在回调中使用this
访问当前元素,这只是jQuery中的常见模式,因此开发人员可能已经决定将索引作为第一个参数更为重要。
另一方面,native Array.prototype.map
方法将element的值作为第一个参数传递给回调,因此$.map
以相同的方式工作似乎是有意义的,因为它应该是进程一组通用的项目。
答案 2 :(得分:1)
是的,jQuery()。map()和jQuery.map()之间存在差异。
概述一些差异:
jQuery.map()=这往往会迭代泛型集合
jQuery()。map()=必须将类似数组的对象强制转换为数组 (.makeArray())
jQuery.map()=主要用于获取或设置值 元素集合并返回新数组
同样.map()是一个ECMAScript5函数,在jQuery之外定义(虽然实现了)。人们想知道jQuery()。map()是否是一个较旧的实现。 .map()显然更快!
John Resig表示,“jQuery.map主要用于与DOM元素数组一起使用(如文档中所述)。因此,它会执行删除null / undefined之类的操作,并将节点数组展平为单阵。“这与ECMA(Mozilla)中的定义一致。另一个实现是Resig自己,因此不同。这不是糟糕的设计!!!!!! Read
第二个原因: “它并不像”修复它“那么简单... ... jQuery.map的回调具有匹配Array.prototype.map的param顺序,而jQuery.fn.map的param顺序匹配所有其他jQuery对象迭代器回调参数顺序。更改为1或者另一个会破坏向后兼容性,jQuery需要付出很大的努力来避免“ Read