0

私はmozilla開発者ネットワークからこのコードを読んでいました:

function list() {
  return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]

関数内の行が混乱しましたが、機能callするオブジェクトを指定せずに使用できるのはなぜthisですか?

この場合argumentsthis、関数にパラメーターを渡していないのですよsliceね?

this次のように、空の配列を取得するときにランダムな要素を配置すると、次のようになります。

return Array.prototype.slice.call([], arguments);

私は何かを誤解したことを知っていますが、何ですか?:)

前もって感謝します!

4

2 に答える 2

4

引数がthisこの場合です

...それは

それなら私はスライス関数にパラメータを渡していないのですよね?

正しい。

于 2013-02-22T22:14:26.233 に答える
1

slice引数なしで呼び出された場合、配列全体のコピーを返します

> x = [1, 2, 3]
> x.slice()
[1, 2, 3]
> x.slice() == x
false

あなたの例では、これはarguments疑似配列を真の配列に変換するために行われます。

于 2013-02-22T22:17:59.463 に答える