首页 > 编程知识 正文

什么叫可枚举属性,js中可枚举的类型

时间:2023-05-04 09:06:53 阅读:274522 作者:2006

引言

说到枚举,可能很多人都会想到枚举类型,但在javascript对象中有一个属性为可枚举性,他是什么呢?

概念

可枚举性(enumerable)用来控制所描述的属性,是否将被包括在for...in循环之中。具体来说,如果一个属性的enumerable为false,下面三个操作不会取到该属性。
* for..in循环
* Object.keys方法
* JSON.stringify方法

enumerable “隐身术” javascriptvar o = {a:1, b:2};o.c = 3;Object.defineProperty(o, 'd', { value: 4, enumerable: false});o.d// 4for( var key in o ) console.log( o[key] ); // 1// 2// 3Object.keys(o) // ["a", "b", "c"]JSON.stringify(o // => "{a:1,b:2,c:3}"

上面代码中,d属性的enumerable为false,所以一般的遍历操作都无法获取该属性,使得它有点像“秘密”属性,但还是可以直接获取它的值。

至于for...in循环和Object.keys方法的区别,在于前者包括对象继承自原型对象的属性,而后者只包括对象本身的属性。如果需要获取对象自身的所有属性,不管enumerable的值,可以使用Object.getOwnPropertyNames方法

来自 搞起博客

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。