JavaScriptの配列オブジェクトと引数インスタンスの詳細な説明
いわゆる配列のようなオブジェクト:
長さ属性といくつかのインデックス属性を持つオブジェクト例:
var array = ['name', 'age', 'sex']; var arrayLike = { 0: 'name', 1: 'age', 2: 'sex', length: 3 }
それなのに、なぜそれは配列のようなオブジェクトと呼ばれますか? オブジェクトはどこにありますか?
次に、これら 2 つのオブジェクトを、読み取りと書き込み、長さの取得、およびトラバースの 3 つの側面から見てみましょう。似てませんか?
配列オブジェクトは配列メソッドを使用できますか?例:
console.log(array[0]); // name console.log(arrayLike[0]); // name array[0] = 'new name'; arrayLike[0] = 'new name';
ただし、上記のコードはエラーを報告します: arrayLike.push は関数ではありません
結局のところ、それは依然として配列クラスです...
配列を呼び出しますMethod
配列クラスの場合 配列メソッドを任意に使いたい場合はどうすればよいですか?
直接呼び出すことはできないので、Function.callを使って間接的に呼び出すことができます:
console.log(array.length); // 3 console.log(arrayLike.length); // 3
Array-like to object
上記の例では、Array-likeをオブジェクトに変換するメソッドto array についてはさらに 3 つ追加します:
for(var i = 0, len = array.length; i < len; i++) { …… } for(var i = 0, len = arrayLike.length; i < len; i++) { …… }
配列のようなオブジェクトと言えば、Arguments オブジェクトは配列のようなオブジェクトです。クライアント側 JavaScript では、一部の DOM メソッド (document.getElementsByTagName() など) も配列のようなオブジェクトを返します。
Arguments オブジェクト
次に、Arguments オブジェクトに焦点を当てます。
Arguments オブジェクトは、関数のパラメーターやその他のプロパティを含む関数本体でのみ定義されます。関数本体では、引数は関数の Arguments オブジェクトを指します。
例:
arrayLike.push('4');
出力結果は次のとおりです:
配列のインデックス属性と長さ属性に加えて、呼び出し先属性もあることがわかります。 . 次に1つずつ紹介していきます。 longent属性属性オブジェクトの長さ属性、例:
rreee
callee属性引数オブジェクトのcallee属性、それを通して関数自体を通して呼び出すことができます。
callee を使用した古典的なクロージャ インタビューの質問の解決策について話しましょう:
var arrayLike = {0: 'name', 1: 'age', 2: 'sex', length: 3 } Array.prototype.join.call(arrayLike, '&'); // name&age&sex Array.prototype.slice.call(arrayLike, 0); // ["name", "age", "sex"] // slice可以做到类数组转数组 Array.prototype.map.call(arrayLike, function(item){ return item.toUpperCase(); }); // ["NAME", "AGE", "SEX"]
次に、引数オブジェクトについて注意すべきいくつかの点について話しましょう:

引数とその対応 パラメータのバインド
var arrayLike = {0: 'name', 1: 'age', 2: 'sex', length: 3 } // 1. slice Array.prototype.slice.call(arrayLike); // ["name", "age", "sex"] // 2. splice Array.prototype.splice.call(arrayLike, 0); // ["name", "age", "sex"] // 3. ES6 Array.from Array.from(arrayLike); // ["name", "age", "sex"] // 4. apply Array.prototype.concat.apply([], arrayLike)
パラメータが渡されない場合、実際のパラメータと引数の値は共有されません
。 また、上記は非厳密モードですが、厳密モードの場合、実際のパラメータと引数は共有されません。
パラメータの受け渡し
ある関数から別の関数へのパラメータの受け渡し
function foo(name, age, sex) { console.log(arguments); } foo('name', 'age', 'sex')
強力な ES6
ES6 の... 演算子を使用して、簡単に配列に変換できます。
function foo(b, c, d){ console.log("实参的长度为:" + arguments.length) } console.log("形参的长度为:" + foo.length) foo(1) // 形参的长度为:3 // 实参的长度为:1
アプリケーション
JavaScript 特別シリーズである次のシリーズでは、jQuery の拡張実装、関数のカリー化、再帰などにおける引数の応用例を実際に見ていきます。シナリオ。この記事では詳細には触れません。
これらのシナリオを要約すると、当面考えられるシナリオは以下のとおりです:
可変長のパラメータ
関数のカリー化
再帰呼び出し
関数のオーバーロード ...
以上がJavaScriptの配列オブジェクトと引数インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

C++ では、関数がオブジェクトを返すときに注意する点が 3 つあります。 オブジェクトのライフサイクルは、メモリ リークを防ぐために呼び出し元によって管理されます。ぶら下がりポインタを回避し、動的にメモリを割り当てるかオブジェクト自体を返すことにより、関数が戻った後もオブジェクトが有効なままであることを確認します。コンパイラーは、パフォーマンスを向上させるために、返されたオブジェクトのコピー生成を最適化する場合がありますが、オブジェクトが値セマンティクスによって渡される場合、コピー生成は必要ありません。
