7

次のようにスライスメソッドをJavaScriptarguments値に適用Array.prototype.slice.call(arguments)すると、配列に変換されるのはなぜですか? スライスが配列で使用され、配列でargumentsはない場合、これはどのように機能しますか? sliceが引数に適用されるのは特殊なケースですか?

4

2 に答える 2

5

EcmaScript仕様からArray.prototype.slice

このslice関数は意図的に汎用的です。そのthis値が Array オブジェクトである必要はありません。したがって、メソッドとして使用するために他の種類のオブジェクトに転送できます。slice関数をホスト オブジェクトに正常に適用できるかどうかは、実装に依存します。

そのため、プロパティsliceを持つすべてのオブジェクト(オブジェクトなど) で機能します。そうでないものでも、空の配列を返すだけです。lengthArguments

于 2013-01-14T21:58:04.803 に答える
3

そうです、これは引数が列挙可能なリストであるという事実を利用するトリックです。他の列挙可能なリスト(ノードリストなど)でも機能します。

于 2013-01-14T21:52:44.517 に答える