我想使用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'。 –