Object.prototype.propertyIsEnumerable() - JavaScript 编辑
propertyIsEnumerable()
方法返回一个布尔值,表示指定的属性是否可枚举。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
obj.propertyIsEnumerable(prop)
参数
prop
- 需要测试的属性名。
返回值
用来表示指定的属性名是否可枚举的布尔值
。
描述
每个对象都有一个 propertyIsEnumerable
方法。此方法可以确定对象中指定的属性是否可以被 for...in
循环枚举,但是通过原型链继承的属性除外。如果对象没有指定的属性,则此方法返回 false
。
例子
propertyIsEnumerable 方法的基本用法
下面的例子演示了 propertyIsEnumerable
方法在普通对象和数组上的基本用法:
var o = {};
var a = [];
o.prop = 'is enumerable';
a[0] = 'is enumerable';
o.propertyIsEnumerable('prop'); // 返回 true
a.propertyIsEnumerable(0); // 返回 true
用户自定义对象和内置对象
下面的例子演示了用户自定义对象和内置对象上属性可枚举性的区别.
var a = ['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
// 之所以这些会返回 false,是因为,在原型链上 propertyIsEnumerable 不被考虑
// (尽管最后两个在 for-in 循环中可以被循环出来)。
o.propertyIsEnumerable('prototype'); // 返回 false (根据 JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor'); // 返回 false
o.propertyIsEnumerable('firstMethod'); // 返回 false
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition |
ECMAScript 5.1 (ECMA-262) Object.prototype.propertyIsEnumerable | Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) Object.prototype.propertyIsEnumerable | Standard | |
ECMAScript (ECMA-262) Object.prototype.propertyIsEnumerable | Living Standard |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论