mozilla

Revision 321025 of Object.prototype.propertyIsEnumerable()

  • リビジョンの URL スラグ: JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
  • リビジョンのタイトル: propertyIsEnumerable
  • リビジョンの ID: 321025
  • 作成日:
  • 作成者: ethertank
  • 現行リビジョン いいえ
  • コメント

このリビジョンの内容

{{英語版章題('Summary')}}

概要

指定されたプロパティが{{gengoheiki("列挙可能", "enumerable")}} かどうかを示す真偽値を返します。

{{英語版章題('Syntax')}}

構文

propertyIsEnumerable(prop) 
{{英語版章題('Parameters')}}

パラメータ

prop
調べたいプロパティの名前。
{{英語版章題('Description')}}

説明

Object の子孫にあたるあらゆるオブジェクトは propertyIsEnumerable メソッドを継承しています。このメソッドはあるオブジェクトのプロパティが for...in ループで列挙可能かどうかを特定することができます。もしオブジェクトが指定されたプロパティを持っていない場合、このメソッドは false を返します。for...in はオブジェクトのプロトタイプチェーンを考慮しますが、このメソッドはオブジェクトのプロトタイプチェーンを通じて継承されたプロパティには利きません。

{{英語版章題('Examples')}}

{{英語版章題('Example: A basic use of propertyIsEnumerable')}}

例: propertyIsEnumerable の基本的な使い方

以下の例はオブジェクトと配列での propertyIsEnumerable の使い方を示しています。

o = new Object();
a = new Array();
o.prop = 'is enumerable';
a[0] = 'is enumerable';

o.propertyIsEnumerable('prop');   // true を返す
a.propertyIsEnumerable(0);        // true を返す
{{英語版章題('Example: User-defined versus built-in objects')}}

例: ユーザー定義オブジェクトと組み込みオブジェクト

以下の例はユーザー定義プロパティと組み込みプロパティの列挙可能性を実証しています。

a = new Array('is enumerable');

a.propertyIsEnumerable(0);          // true を返す
a.propertyIsEnumerable('length');   // false を返す

Math.propertyIsEnumerable('random');   // false を返す
this.propertyIsEnumerable('Math');     // false を返す
{{英語版章題('Example: Direct versus inherited properties')}}

例: 直接のプロパティと継承されたプロパティ

var a = [];

a.propertyIsEnumerable('constructor');         // false を返す

function firstConstructor() {
    this.property = 'is not enumerable';
}

firstConstructor.prototype.firstMethod = function () {};

function secondConstructor() {
    this.method = function method() { return 'is enumerable'; };
}

secondConstructor.prototype = new firstConstructor;
secondConstructor.prototype.constructor = secondConstructor;

var o = new secondConstructor();
o.arbitraryProperty = 'is enumerable';

o.propertyIsEnumerable('arbitraryProperty');   // true を返す
o.propertyIsEnumerable('method');              // true を返す
o.propertyIsEnumerable('property');            // false を返す

o.property = 'is enumerable';

o.propertyIsEnumerable('property');            // true を返す


/* これらは propertyIsEnumerable が考慮しないプロトタイプであるため、
  (※最後の 2 つはイテレート可能であるにも関わらず)全て false を返します */
o.propertyIsEnumerable('prototype'); // false を返す (as of JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor'); // false を返す
o.propertyIsEnumerable('firstMethod'); // false を返す
{{英語版章題('See also')}}

参照

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

<div>{{英語版章題('Summary')}}</div>
<h2>概要</h2>
<p>指定されたプロパティが{{gengoheiki("列挙可能", "enumerable")}} かどうかを示す真偽値を返します。</p>




<div>{{英語版章題('Syntax')}}</div>
<h2>構文</h2>
<pre class="syntaxbox"><code>propertyIsEnumerable(<i>prop</i>) </code></pre>





<div>{{英語版章題('Parameters')}}</div>
<h3>パラメータ</h3>
<dl>
  <dt><code>prop</code></dt>
  <dd>調べたいプロパティの名前。</dd>
</dl>





<div>{{英語版章題('Description')}}</div>
<h2>説明</h2>

<p><code>Object</code> の子孫にあたるあらゆるオブジェクトは <code>propertyIsEnumerable</code> メソッドを継承しています。このメソッドはあるオブジェクトのプロパティが <code><a href="ja/JavaScript/Reference/Statements/for...in">for...in</a></code> ループで列挙可能かどうかを特定することができます。もしオブジェクトが指定されたプロパティを持っていない場合、このメソッドは false を返します。<code>for...in</code> はオブジェクトのプロトタイプチェーンを考慮しますが、このメソッドはオブジェクトのプロトタイプチェーンを通じて継承されたプロパティには利きません。</p>





<div>{{英語版章題('Examples')}}</div>
<h2>例</h2>





<div>{{英語版章題('Example: A basic use of propertyIsEnumerable')}}</div>
<h3>例: <code>propertyIsEnumerable</code> の基本的な使い方</h3>
<p>以下の例はオブジェクトと配列での <code>propertyIsEnumerable</code> の使い方を示しています。</p>

<pre class="brush: js">
o = new Object();
a = new Array();
o.prop = 'is enumerable';
a[0] = 'is enumerable';

o.propertyIsEnumerable('prop');   // true を返す
a.propertyIsEnumerable(0);        // true を返す</pre>





<div>{{英語版章題('Example: User-defined versus built-in objects')}}</div>
<h3>例: ユーザー定義オブジェクトと組み込みオブジェクト</h3>
<p>以下の例はユーザー定義プロパティと組み込みプロパティの列挙可能性を実証しています。</p>

<pre class="brush: js">
a = new Array('is enumerable');

a.propertyIsEnumerable(0);          // true を返す
a.propertyIsEnumerable('length');   // false を返す

Math.propertyIsEnumerable('random');   // false を返す
this.propertyIsEnumerable('Math');     // false を返す</pre>





<div>{{英語版章題('Example: Direct versus inherited properties')}}</div>
<h3>例: 直接のプロパティと継承されたプロパティ</h3>
<pre class="brush: js">
var a = [];

a.propertyIsEnumerable('constructor');         // false を返す

function firstConstructor() {
    this.property = 'is not enumerable';
}

firstConstructor.prototype.firstMethod = function () {};

function secondConstructor() {
    this.method = function method() { return 'is enumerable'; };
}

secondConstructor.prototype = new firstConstructor;
secondConstructor.prototype.constructor = secondConstructor;

var o = new secondConstructor();
o.arbitraryProperty = 'is enumerable';

o.propertyIsEnumerable('arbitraryProperty');   // true を返す
o.propertyIsEnumerable('method');              // true を返す
o.propertyIsEnumerable('property');            // false を返す

o.property = 'is enumerable';

o.propertyIsEnumerable('property');            // true を返す


/* これらは propertyIsEnumerable が考慮しないプロトタイプであるため、
  (※最後の 2 つはイテレート可能であるにも関わらず)全て false を返します */
o.propertyIsEnumerable('prototype'); // false を返す (as of JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor'); // false を返す
o.propertyIsEnumerable('firstMethod'); // false を返す</pre>




<div>{{英語版章題('See also')}}</div>
<h2>参照</h2>



<ul>
  <li><a href="/ja/docs/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in">for...in</a></li>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/keys" title="JavaScript/Reference/Global Objects/Object/keys">Object.keys</a></li>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/defineProperty" title="JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty()</a></li>
</ul>
このリビジョンへ戻す