当我使用Uncaught TypeError: Function.prototype.apply: Arguments list has wrong type
方法时,我收到错误.apply()
但我不确定原因。我的代码是here。
当jsfiddle加载时,单击单词test旁边的,然后按Enter键。发生错误的方法是this.addEvent
。我试图让我的对象成为事件回调函数中的'this'。
答案 0 :(得分:44)
您应该使用.call
代替.apply
。
a(lst[0], lst[1], lst[2], ...)
是使用lst
作为arguments
的数组(或obj
)时, a.apply(obj, lst)
相当于this
。
a.call(obj, x, y, z, ...)
相当于a(x, y, z, ...)
使用obj
作为this
。
由于e
是参数之一,而不是参数数组,因此您应该使用.call
。
答案 1 :(得分:12)
apply
需要一个数组对象。如果要直接提供参数,也可以使用call
。您还可以使用apply
func.apply(editorObject, [e]); //=> apply expects an array of arguments
func.call(editorObject, e); //=> call receives arguments directly