4

私はjavascriptでcallapplyを知っていますが、javascript CallとApplyの正確な違いはどうですか..?? そして、いくつかのコードがこれを次のように一緒に使用していることがわかりました。

  function doSomething() {
    return Function.prototype.call.apply(Array.prototype.slice, arguments);
}

は..と同じです。

Array.prototype.slice.apply(arguments)

call と apply を一緒に使用する理由

4

2 に答える 2

4

いいえ、同じではありません。Array.prototype.slice.apply(arguments)現在のargumentオブジェクトにスライス関数を適用Function.prototype.call.apply(Array.prototype.slice, arguments);し、最初の引数として提供される配列にスライス関数を呼び出します。

このようなことは、新しい EcmaScript 構文で簡単になるかもしれません。あなたdoSomethingはと同等です

function doSomething(array, ...)
    array.slice(...); // assuming array is really an array
}

一方、2番目は次と同等です

function (...) {
    arguments.slice(); // assuming argument objects are actual arrays
}
于 2012-10-26T13:48:46.067 に答える
1

同じです

Array.prototype.slice.apply(arguments)

はい、私も同じだと思います..!!

于 2012-10-28T06:40:45.177 に答える