ホームページ  >  記事  >  ウェブフロントエンド  >  Array.prototype.slice.call(arguments) はどのように引数を配列に変換しますか?

Array.prototype.slice.call(arguments) はどのように引数を配列に変換しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-21 22:02:02946ブラウズ

How Does Array.prototype.slice.call(arguments) Transform Arguments into an Array?

Array.prototype.slice.call(arguments) の内部動作の詳細

Array.prototype.slice の動作を理解します。 call(arguments) は、引数を本物の配列に変換するという表面レベルの使用を超えて、徹底的な探索を必要とします。

通常、slice() が配列に対して直接呼び出されると、その要素を反復処理します。配列。ただし、.call() と .apply() を使用すると、関数内で this の値を手動で定義できるユニークな機会が得られます。

Array.prototype.slice.call(arguments) の場合、配列数値の .length とインデックス付きプロパティを持つ、 -like オブジェクトは、これとして置き換えられます。この置換により、slice() が本物の配列を扱っていると想定され、通常の操作が容易になります。

固有の配列プロパティを持たないプレーン オブジェクトが .call() を使用してこのように設定される次の例を考えてみましょう。

var my_object = {
    '0': 'zero',
    '1': 'one',
    '2': 'two',
    '3': 'three',
    '4': 'four',
    length: 5
};

var sliced = Array.prototype.slice.call( my_object, 3 );

驚くべきことに、slice() は期待どおりに動作し、望ましい結果が得られます。

['three','four'];

引数オブジェクトが Array の this の値として渡される場合にも、同じメカニズムが適用されます。プロトタイプ.スライス.コール(引数)。引数には .length プロパティと数値インデックスの配列があるため、slice() は実数の配列を操作するかのように処理を進め、一貫性のある予測可能な結果を​​提供します。

以上がArray.prototype.slice.call(arguments) はどのように引数を配列に変換しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。