打扰一下初学者的问题,但是我很难解决这个问题。使用jQuery,我可以做这样的事情:

$.each(array, testF);

function testF(){
    console.log(this.name);
}

使用$ .each,我可以将数组传递给函数testF,并访问数组每一行中包含的对象。但是当我尝试做类似的事情时:
array[0].testF()

我收到一条错误消息,指出该对象没有方法'testF'。我想知道是否有人可以解释这里发生了什么...为什么jQuery一种有效,而第二种无效。同样,请原谅问题。

最佳答案

  • $.each(array, testF)为数组中的每个元素调用testF(i, elem),并将this绑定(bind)到elem
  • array[0].testF()尝试调用testF()上存在的方法array[0]
  • $.each()的等效功能是testF.call(array[0], 0, array[0]),或者因为您不使用参数,所以可以简化testF.call(array[0])
    有关MDN的文档,请参见 .call()

    10-06 08:06