未捕获的TypeError:Function.prototype.apply:参数列表的类型错误(?)

时间:2011-05-13 06:55:14

标签: javascript

当我使用Uncaught TypeError: Function.prototype.apply: Arguments list has wrong type方法时,我收到错误.apply()但我不确定原因。我的代码是here

当jsfiddle加载时,单击单词test旁边的,然后按Enter键。发生错误的方法是this.addEvent。我试图让我的对象成为事件回调函数中的'this'。

2 个答案:

答案 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