Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla
Your Search Results

    Object.prototype.propertyIsEnumerable()

    概要

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

    構文

    propertyIsEnumerable(prop) 

    パラメータ

    prop
    調べたいプロパティの名前。

    説明

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

    注記: JavaScript 1.8.1 (Firefox 3.6) より、propertyIsEnumerable("prototype")true でなく false を返します。これは ECMAScript 5 に準じるものです。

    例: propertyIsEnumerable の基本的な使い方

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

    o = new Object();
    a = new Array();
    o.prop = 'is enumerable';
    a[0] = 'is enumerable';
    
    o.propertyIsEnumerable('prop');   // true を返す
    a.propertyIsEnumerable(0);        // true を返す

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

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

    a = new Array('is enumerable');
    
    a.propertyIsEnumerable(0);          // true を返す
    a.propertyIsEnumerable('length');   // false を返す
    
    Math.propertyIsEnumerable('random');   // false を返す
    this.propertyIsEnumerable('Math');     // false を返す

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

    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 を返す

    関連情報

    ドキュメントのタグと貢献者

    Contributors to this page: Yuichirou, Potappo, teoli, ethertank, Mgjbot
    最終更新者: teoli,