indexOf.call vs jQuery源代码中的array.indexOf

时间:2011-07-04 09:06:17

标签: javascript jquery

我正在浏览jQuery的来源并碰到了这个:

return indexOf.call( array, elem );

- Line 683

我想知道背后的逻辑是什么,为什么不这样做:

return array.indexOf(elem );

1 个答案:

答案 0 :(得分:2)

我的猜测是该代码的作者只是不想关注传递给.inArray()的目标。

例如,如果我们在传递的变量上调用$.inArray( 42, 'hello' ),那么调用.indexOf()会明显崩溃。 Number.prototype(以及其他类型)不知道这种方法。

通过对传递的变量应用Array.prototype.indexOf方法,.indexOf()方法将照顾我们。