何が起こっているか: オブジェクトの配列の「オブジェクト」型
JavaScript では、配列にオブジェクトが含まれている場合に予期しない現象が発生します。 「配列」として分類される代わりに、「オブジェクト」としてラベル付けされます。この動作は、以下に示すような状況で明らかになります:
<code class="javascript">$.ajax({ url: 'http://api.twitter.com/1/statuses/user_timeline.json', data: { screen_name: 'mick__romney'}, dataType: 'jsonp', success: function(data) { console.dir(data); //Array[20] alert(typeof data); //Object } }); </code>
なぜ混乱?
この奇妙な動作の背後にある理由は、JavaScript の仕様にあります。デフォルトでは、Array は順序付けられた値のリストを表しているにもかかわらず、「オブジェクト」タイプとみなされます。これは、オブジェクトを含む配列を含むすべての配列が、オブジェクト型のプロパティと機能を継承することを意味します。
配列の識別
変数が実際の配列であるかどうかを確認するには
<code class="javascript">var isArr = data instanceof Array; var isArr = Array.isArray(data);</code>
ただし、最も信頼できる方法は、変数のプロトタイプ チェーンを調べることです:
<code class="javascript">isArr = Object.prototype.toString.call(data) == '[object Array]';</code>
jQuery を使用する
jQuery を利用する場合は、専用の isArray 関数が利用可能です:
<code class="javascript">var isArr = $.isArray(data);</code>
これらのメソッドを採用することで、開発者は変数にオブジェクトが含まれている場合でも変数を配列として正確に分類し、データの適切な処理と操作を保証できます。 .
以上がオブジェクトの配列が JavaScript で「オブジェクト」とみなされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。