arguments
元気apply()
です
関数を呼び出すときapply
は、 original を使用しても問題ありませんarguments
。あなたの例では、この行を次の行に簡単に置き換えることができます。
this.addSelectedClass.apply(this, arguments);
arguments
とcall()
はうまくありません
ただし、呼び出している場合は、関数に任意のオブジェクト/値の配列を渡したい場合は、実際の配列にcall
変換する必要があります(これは呼び出しによって行われます)。そのため、渡したい引数の数が正確にわかっていて、それらを個別に渡す場合に通常使用されます。arguments
slice()
call()
arguments
実際の配列オブジェクトではありません。それらは (length
たとえばプロパティを持っている) ように見えますが、そうではありません。
Mozilla 開発者ネットワークに関する議論
完全に明確にするための少しの説明
に関連するドキュメントは次のようにapply()
なりcall()
ます。
func.apply(thisArg[, argsArray]);
func.call(thisArg[, arg1[, arg2[, ...]]]);
これらのいずれかを使用して同じ機能を実行する場合があります。
使用apply()
すると、すべての引数を一度に渡すことができます。通常、呼び出しから特定の引数を省略したり、実際の配列slice()
に変換したりするために使用されます。arguments
使用するときcall()
は、個々の引数と必要な数を渡します。配列に変換された引数を提供する場合、呼び出された関数は、その特定の配列で提供されるすべての引数を使用して、配列型の 1 つのパラメーターを取得します。
これでさらに問題が解決することを願っています。