ホームページ ウェブフロントエンド jsチュートリアル Array.prototype.slice.call はどのように引数を配列に変換するのでしょうか?

Array.prototype.slice.call はどのように引数を配列に変換するのでしょうか?

Oct 21, 2024 pm 10:02 PM

How Does Array.prototype.slice.call Transform Arguments into Arrays?

Array.prototype.slice.call のメカニズムを明らかにする

Array.prototype.slice.call は、次のことを可能にする多用途ツールです。引数を本物の配列に変換する機能。ただし、この変換の背後にある根本的なメカニズムは謎に思えるかもしれません。

通常の状況では、.slice() を呼び出すとき、関数はその入力が配列であることを期待します。この配列を反復処理し、細心の注意を払って操作を実行することで処理が進みます。

このプロセスの興味深い点は、引数に適用されたときの .slice() の奇妙な動作です。通常、引数は配列そのものではありません。むしろ、配列のような構造を持ち、 .length プロパティとさまざまな数値インデックスを備えています。これにより、.slice() に引数が配列であると想定できる柔軟性が与えられ、操作をシームレスに実行できるようになります。

この変換の鍵は call() メソッドと apply() メソッドにあります。これらのメソッドを使用すると、関数の this 値を特定のオブジェクトに手動で割り当てることができます。 this 値を配列のようなオブジェクトに設定することで、基本的に .slice() をだまして実際の配列を操作していると信じ込ませます。

この概念を説明するために、次の単純なオブジェクトを考えてみましょう。

var my_object = {
    '0': 'zero',
    '1': 'one',
    '2': 'two',
    '3': 'three',
    '4': 'four',
    length: 5
};
ログイン後にコピー

my_object は配列ではありませんが、.slice() を次の値として設定することでその値を抽出できます。

var sliced = Array.prototype.slice.call( my_object, 3 );
ログイン後にコピー

コンソール出力から明らかなように、結果は配列には目的の要素が含まれています:

['three','four'];
ログイン後にコピー

本質的に、Array.prototype.slice.call を引数オブジェクトとともに使用する場合、仕組みは同じです。引数オブジェクトは、配列ではないにもかかわらず、その構造を十分にミラーリングして、 .slice() をだまして配列であるかのように操作を実行させます。

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

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

jQueryは要素のパディング/マージンを取得します jQueryは要素のパディング/マージンを取得します Mar 01, 2025 am 08:53 AM

jQueryは要素のパディング/マージンを取得します

jQuery日付が有効かどうかを確認します jQuery日付が有効かどうかを確認します Mar 01, 2025 am 08:51 AM

jQuery日付が有効かどうかを確認します

10 jQuery Accordionsタブ 10 jQuery Accordionsタブ Mar 01, 2025 am 01:34 AM

10 jQuery Accordionsタブ

10 jqueryプラグインをチェックする価値があります 10 jqueryプラグインをチェックする価値があります Mar 01, 2025 am 01:29 AM

10 jqueryプラグインをチェックする価値があります

ノードとHTTPコンソールを使用したHTTPデバッグ ノードとHTTPコンソールを使用したHTTPデバッグ Mar 01, 2025 am 01:37 AM

ノードとHTTPコンソールを使用したHTTPデバッグ

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

jQueryはscrollbarをdivに追加します jQueryはscrollbarをdivに追加します Mar 01, 2025 am 01:30 AM

jQueryはscrollbarをdivに追加します

See all articles