我想使用javascript apply()方法调用函数。如果函数没有参数,这工作正常。即在JavaScript中调用具有参数的应用方法
function test()
{
console.log(this);
}
body = document.getElementsByTagName("body")[0]; // shortcut to body element
test.apply(body); // returns [object HTMLBodyElement]
但我似乎无法做同样的事情,以调用具有参数的函数:
function test(msg)
{
console.log(msg);
}
body = document.getElementsByTagName("body")[0]; // shortcut to body element
test(this).apply(body); // mysteriously returns the correct result, then
// typeError: 'undefined' is not an object (evaluating "test(this).apply".
以上的例子是完全微不足道,但我的问题的粮食是:如何做我使用apply()方法来调用带参数的函数。
重要的是要注意,第二个参数应该是一个数组,而不仅仅是一个单一的元素。 'test.apply(null,body)'为我打破了(Chrome 35),但'test.apply(null,[body])'起作用。 – FeifanZ
使用apply方法的真正用处是什么好处? – Thunder
我确定有很多真正的用途。有些人想到的是猴子补丁函数(包括内置函数),[可变参数函数](http://en.wikipedia.org/wiki/Variadic_function),以及为回调函数指定'this'。 –