在线文档教程

object.propertyIsEnumerable

object.propertyIsEnumerable

propertyIsEnumerable() 方法返回一个布尔值,表示指定的属性是否可枚举。

语法

obj.propertyIsEnumerable(prop)

参数

prop需要测试的属性名。

返回值

用来表示指定的属性名是否可枚举的Boolean

描述

每个对象都有一个propertyIsEnumerable方法。此方法可以确定对象中指定的属性是否可以被for...in循环枚举,但是通过原型链继承的属性除外。如果对象没有指定的属性,则此方法返回false

例子

propertyIsEnumerable方法的基本用法

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

var o = {}; var a = []; o.prop = 'is enumerable'; a[0] = 'is enumerable'; o.propertyIsEnumerable('prop' // returns true a.propertyIsEnumerable(0 // returns true

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

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

var a = ['is enumerable']; a.propertyIsEnumerable(0 // returns true a.propertyIsEnumerable('length' // returns false Math.propertyIsEnumerable('random' // returns false this.propertyIsEnumerable('Math' // returns false

自身属性和继承属性

var a = []; a.propertyIsEnumerable('constructor' // returns 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' // returns true o.propertyIsEnumerable('method' // returns true o.propertyIsEnumerable('property' // returns false o.property = 'is enumerable'; o.propertyIsEnumerable('property' // returns true // These return false as they are on the prototype which // propertyIsEnumerable does not consider (even though the last two // are iteratable with for-in) o.propertyIsEnumerable('prototype' // returns false (as of JS 1.8.1/FF3.6) o.propertyIsEnumerable('constructor' // returns false o.propertyIsEnumerable('firstMethod' // returns false

规范

SpecificationStatusComment
ECMAScript 3rd Edition (ECMA-262)StandardInitial definition
ECMAScript 5.1 (ECMA-262)The definition of 'Object.prototype.propertyIsEnumerable' in that specification.Standard
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Object.prototype.propertyIsEnumerable' in that specification.Standard
ECMAScript Latest Draft (ECMA-262)The definition of 'Object.prototype.propertyIsEnumerable' in that specification.Living Standard

浏览器兼容

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)