in

  • リビジョンの URL スラッグ: JavaScript/Reference/Operators/in
  • リビジョンのタイトル: in
  • リビジョンの ID: 295943
  • 作成日:
  • 作成者: yyss
  • 現行リビジョン いいえ
  • コメント

このリビジョンの内容

概要

in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。

Operator
Implemented in: JavaScript 1.4

構文

prop in objectName

引数

prop
プロパティ名または配列のインデックスを表す文字列式または数値式です。
objectName
オブジェクトの名前です。

説明

次の例で in 演算子の使用法を示します。

// Arrays
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 は Array のプロパティ)

// 定義済みオブジェクト
"PI" in Math          // true を返す

// ユーザ定義オブジェクト
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar  // true を返す
"model" in mycar // true を返す

in 演算子の右側には、オブジェクトを指定しなければなりません。例えば、String コンストラクタで作成した文字列は指定できますが、文字列リテラルは指定できません。

var color1 = new String("green");
"length" in color1 // true を返す
var color2 = "coral";
"length" in color2 // エラーが発生 (color2 は String オブジェクトではありません)

削除済みあるいは未定義状態のプロパティへの 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 を返す

参考情報

このリビジョンのソースコード

<h2 id="Summary" name="Summary">概要</h2>
<p><code>in</code> 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に <code>true</code> を返します。</p>
<table class="fullwidth-table">
  <tbody>
    <tr>
      <td class="header" colspan="2">Operator</td>
    </tr>
    <tr>
      <td>Implemented in:</td>
      <td>JavaScript 1.4</td>
    </tr>
  </tbody>
</table>
<h2 id="Syntax" name="Syntax">構文</h2>
<p><code><em>prop</em> in <em>objectName</em> </code></p>
<h2 id="Parameters" name="Parameters">引数</h2>
<dl>
  <dt>
    <code>prop</code></dt>
  <dd>
    プロパティ名または配列のインデックスを表す文字列式または数値式です。</dd>
  <dt>
    <code>objectName</code></dt>
  <dd>
    オブジェクトの名前です。</dd>
</dl>
<h2 id="Description" name="Description">説明</h2>
<p>次の例で <code>in</code> 演算子の使用法を示します。</p>
<pre class="eval">
// Arrays
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 は Array のプロパティ)

// 定義済みオブジェクト
"PI" in Math          // true を返す

// ユーザ定義オブジェクト
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar  // true を返す
"model" in mycar // true を返す
</pre>
<p><code>in</code> 演算子の右側には、オブジェクトを指定しなければなりません。例えば、<code>String</code> コンストラクタで作成した文字列は指定できますが、文字列リテラルは指定できません。</p>
<pre class="eval">
var color1 = new String("green");
"length" in color1 // true を返す
var color2 = "coral";
"length" in color2 // エラーが発生 (color2 は String オブジェクトではありません)
</pre>
<h3 id="Using_in_with_deleted_or_undefined_properties" name="Using_in_with_deleted_or_undefined_properties">削除済みあるいは未定義状態のプロパティへの <code>in</code> の使用</h3>
<p><code><a href="/ja/docs/JavaScript/Reference/Operators/delete" title="ja/docs/JavaScript/Reference/Operators/Special/delete">delete</a></code> 演算子で削除されたプロパティについて、<code>in</code> 演算子は <code>false</code> を返します。</p>
<pre class="eval">
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 を返す
</pre>
<p>undefined を設定しているが削除されていないプロパティについて、<code>in</code> 演算子は true を返します。</p>
<pre class="eval">
var mycar = {make: "Honda", model: "Accord", year: 1998};
mycar.make = undefined;
"make" in mycar;  // true を返す
</pre>
<pre class="eval">
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; // true を返す
</pre>
<h3 id="Inherited_properties" name="Inherited_properties">継承されたプロパティ</h3>
<p>プロトタイプチェインのプロパティについて、<code>in</code> 演算子は <code>true</code> を返します。</p>
<pre class="eval">
"toString" in {}; // true を返す
</pre>
<h2 id="See_also" name="See_also">参考情報</h2>
<ul>
  <li><a href="/ja/docs/JavaScript/Reference/Operators/delete" title="ja/docs/JavaScript/Reference/Operators/Special/delete">delete</a></li>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty" title="ja/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty">Object.prototype.hasOwnProperty</a></li>
</ul>
Revert to this revision