ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でオブジェクトの配列に対して「typeof」が「object」を返すのはなぜですか?

JavaScript でオブジェクトの配列に対して「typeof」が「object」を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 20:12:02911ブラウズ

Why does `typeof` return

JavaScript のユニークな動作の検証: オブジェクトの配列が「配列」ではなく「オブジェクト」を返す理由

JavaScript における興味深い現象オブジェクトの配列を操作するときに発生します。驚くべきことに、それらは配列のような性質にもかかわらず、typeof 演算子が使用される場合にはオブジェクトとして分類されます。この矛盾は、特に次のような場合に非常に混乱する可能性があります:

$.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
    }
});​

この動作は、Array オブジェクトを Object 型とみなす JavaScript 仕様の特殊性に起因します。ただし、これは配列とオブジェクトが交換可能であることを意味するものではありません。変数が配列を表すかどうかを正確に判断するには、次のメソッドを使用します。

  • instanceof Array: 変数が Array コンストラクターのインスタンスであるかどうかを確認します。
  • Array.isArray(data): 変数が配列であるかどうかを判断するために特別に設計されたネイティブ メソッドです。
  • Object.prototype.toString.call(data) == ' [object Array]': Object プロトタイプの toString メソッドを利用する信頼性の高いアプローチ。
  • jQuery.isArray(data): jQuery ユーザーにとって便利なオプション。

これらの手法を利用すると、変数にオブジェクトが含まれている場合でも、変数が配列であるかどうかを正確に識別でき、その配列のような動作とオブジェクトの分類との間の明らかな矛盾を解決できます。

以上がJavaScript でオブジェクトの配列に対して「typeof」が「object」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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