我正在浏览jQuery的来源并碰到了这个:
return indexOf.call( array, elem );
- Line 683
我想知道背后的逻辑是什么,为什么不这样做:
return array.indexOf(elem );
答案 0 :(得分:2)
我的猜测是该代码的作者只是不想关注传递给.inArray()
的目标。
例如,如果我们在传递的变量上调用$.inArray( 42, 'hello' )
,那么调用.indexOf()
会明显崩溃。 Number.prototype
(以及其他类型)不知道这种方法。
通过对传递的变量应用Array.prototype.indexOf
方法,.indexOf()
方法将照顾我们。