javascript apply()メソッドを使用して関数を呼び出すとします。関数に引数がない場合、これはうまくいきます。上記JavaScriptで引数を指定してメソッドを呼び出す
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".
例は完全に些細ですが、私の質問の粒がある:すなわち
function test()
{
console.log(this);
}
body = document.getElementsByTagName("body")[0]; // shortcut to body element
test.apply(body); // returns [object HTMLBodyElement]
しかし、私は引数を持つ関数を呼び出すために同じことを行うように見えることはできませんどのようにapply()メソッドを使用して引数を持つ関数を呼び出します。
2番目の引数は、単一の要素ではなく配列でなければならないことに注意してください。 'test.apply(null、body)'は私のために壊れますが(Chrome 35)、 'test.apply(null、[body])'は動作します。 – FeifanZ
適用メソッドを使用する実際の使用方法は何ですか? – Thunder
本当のホストがたくさんあると確信しています。春の気になるのは、モンキーパッチ関数(組み込み関数を含む)、[variadic関数](http://en.wikipedia.org/wiki/Variadic_function)、そしてコールバック関数に 'this'を指定することです。 –