0

まず第一に、答えが明らかであるか、および/または見つけやすいかどうか、言い訳をお願いしたいと思います。完全な答えは見つかりませんでした。

質問は非常に簡単です。

var array1 = Array().slice.call(arguments,1);
var array2 = Array.prototype.slice.call(arguments,1);

彼らは同じことをします。オブジェクト、日付、文字列などのプロトタイプに対してそのような方法で行うことができますか

4

2 に答える 2

1

それ以外の場合は使用されない配列を作成していないため、2 番目のアプローチの方が適しています。最初のアプローチでは、配列を作成し、動的なプロトタイプ チェーンの解決を使用してスライス メソッドを見つけcall、引数をコンテキストとして使用します。2 番目のアプローチはメソッドに直接アクセスするsliceため、オブジェクトの作成とプロトタイプ チェーンの解決を回避できるため、全体的に優れています。

于 2012-05-14T16:07:46.823 に答える
1

はい、できます。単純に、各インスタンスがコンストラクターのプロトタイプから継承されているからです。

つまり(new Array()).slice(または、より良い[].slice) は とまったく同じ方法Array.prototype.sliceです。

于 2012-05-14T16:06:59.997 に答える