mozilla
您的搜索结果

    Object.prototype.propertyIsEnumerable()

    概述

    propertyIsEnumerable() 方法返回一个布尔值,表明指定的属性名是否是当前对象可枚举的自身属性。

    语法

    obj.propertyIsEnumerable(prop)

    参数

    prop
    需要测试的属性名。

    描述

    每个对象都有 propertyIsEnumerable 方法。该方法可以判断出指定的属性是否是自身的可枚举属性,也就是说该属性是否可以通过 for...in 循环等遍历到,不过有些属性虽然可以通过 for...in 循环遍历到,但因为它们不是自身属性,而是从原型链上继承的属性,所以该方法也会返回false。如果对象没有指定的属性,该方法返回 false

    例子

    例子: propertyIsEnumerable方法的基本用法

    下面的例子演示了propertyIsEnumerable方法在普通对象和数组上的基本用法:

    var o = {};
    var a = [];
    o.prop = '我是个可枚举属性';
    a[0] = '我是个可枚举属性';
    
    o.propertyIsEnumerable('prop');   // 返回true
    a.propertyIsEnumerable(0);        // 返回true
    

    例子: 用户自定义对象和引擎内置对象

    下面的例子演示了用户自定义对象和引擎内置对象上属性可枚举性的区别.

    var a = ['我是个可枚举属性'];
    
    a.propertyIsEnumerable(0);          // 返回true
    a.propertyIsEnumerable('length');   // 返回false
    
    Math.propertyIsEnumerable('random');   // 返回false
    this.propertyIsEnumerable('Math');     // 返回false
    

    例子: 自身属性和继承属性

    var a = [];
    a.propertyIsEnumerable('constructor');         // 返回false,constructor不是自身属性
    
    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,property是继承属性
    
    o.property = 'is enumerable';
    
    o.propertyIsEnumerable('property');            // 返回true
    
    // 继承属性都返回false
    o.propertyIsEnumerable('prototype'); // 返回false 
    o.propertyIsEnumerable('constructor'); // 返回false
    o.propertyIsEnumerable('firstMethod'); // 返回false

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

    Gecko-specific notes

    • 从 JavaScript 1.8.1 (in Firefox 3.6) 开始,propertyIsEnumerable("prototype")返回 false,不再是 true;这与 ECMAScript 5 的结果一致。

    相关链接

    文档标签和贡献者

    此页面的贡献者有: ziyunfei, AlexChao, teoli
    最后编辑者: teoli,