次のようにスライスメソッドをJavaScriptarguments
値に適用Array.prototype.slice.call(arguments)
すると、配列に変換されるのはなぜですか? スライスが配列で使用され、配列でarguments
はない場合、これはどのように機能しますか? slice
が引数に適用されるのは特殊なケースですか?
1036 次
2 に答える
5
のEcmaScript仕様からArray.prototype.slice
:
注この
slice
関数は意図的に汎用的です。そのthis
値が Array オブジェクトである必要はありません。したがって、メソッドとして使用するために他の種類のオブジェクトに転送できます。slice
関数をホスト オブジェクトに正常に適用できるかどうかは、実装に依存します。
そのため、プロパティslice
を持つすべてのオブジェクト(オブジェクトなど) で機能します。そうでないものでも、空の配列を返すだけです。length
Arguments
于 2013-01-14T21:58:04.803 に答える
3
そうです、これは引数が列挙可能なリストであるという事実を利用するトリックです。他の列挙可能なリスト(ノードリストなど)でも機能します。
于 2013-01-14T21:52:44.517 に答える