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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 12:26:29874ブラウズ

Why Does `typeof` Return

矛盾を理解する: オブジェクトを含む配列 typeof が「Object」を返す理由

開発者は、配列に対して typeof を呼び出すときに驚くべき現象に遭遇する可能性があります。オブジェクトが含まれている場合、不可解なことに「配列」ではなく「オブジェクト」が返されます。この記事では、この一見矛盾した動作について詳しく説明します。

例を調べて、問題を説明します。

<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>

console.dir(data) は変数を配列として正しく識別しますが、typeofデータは不一致で "Object" を返します。

その説明は、typeof 演算子がオブジェクトの内部 [[Class]] プロパティの型を返すという JavaScript の特殊な仕様にあります。配列の場合、[[Class]] プロパティは「Array」に設定されますが、オブジェクトで囲まれる場合、[[Class]] プロパティは「Object」に変わります。

正確な型チェックを確保するには、開発者はさまざまなアプローチを採用できます。

  • 配列のデータ インスタンス: 変数が配列型のインスタンスであるかどうかを確認します。
  • Array.isArray(data): 以下のために特別に設計されたメソッドです。オブジェクトが配列であるかどうかを判断します。
  • Object.prototype.toString.call(data) == '[object Array]': 信頼性が高く広く受け入れられている配列検出方法です。
  • $ .isArray(data): 配列をチェックするように設計された jQuery 固有の関数。

この特性を理解し、これらのテクニックを利用することで、開発者は JavaScript コードでオブジェクトの配列を効果的に処理できます。

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

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