in

オブジェクトが、指定されたプロパティを持つか否かを調べます。

文法

prop in objectName
引数 説明
prop プロパティ名または配列のインデックスを表す、文字列または数値の式を指定します。
objectName オブジェクトの名前を指定します。

説明

下記は、in演算子の使用例になります。

// 配列
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees        // true
3 in trees        // true
6 in trees        // false
"bay" in trees    // false (値では無く、インデックス番号を指定しなければ
                  //        いけません)
"length" in trees // true (lengthは配列のプロパティです)

// 予め定義されているオブジェクト
"PI" in Math          // true

// カスタムオブジェクト
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar  // true
"model" in mycar // true

演算子の右側には、オブジェクトを指定しなければいけません。 例えば、Stringコンストラクタを使用して作成した文字列を指定することが出来ますが、 文字列リテラルを指定することは出来ません。

var color1 = new String("green");
"length" in color1 // true

var color2 = "coral";
// エラーを発生してみます。(color2は、String"オブジェクト"ではありません)
"length" in color2

削除済み、未定義のプロパティへのinの使用について

delete演算子を使用して、 プロパティを削除した場合、in演算子はそのプロパティに対してはfalseを返すようになります。

var mycar = {make: "Honda", model: "Accord", year: 1998};
delete mycar.make;
"make" in mycar;  // false

var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
3 in trees; // false

削除されていないundefinedのプロパティを設定した場合、 in演算子はそのプロパティに対してtrueを返します。

var mycar = {make: "Honda", model: "Accord", year: 1998};
mycar.make = undefined;
"make" in mycar;  // true
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; // true

継承されたプロパティについて

in演算子は、プロトタイプチェーン内のプロパティに対してtrueを返します。

"toString" in {}; // true

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本 ◯ ◯ ◯ ◯ ◯
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本 ◯ ◯ ◯ ◯ ◯ ◯

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。