博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js对象中什么是可枚举性(enumerable)?
阅读量:6245 次
发布时间:2019-06-22

本文共 691 字,大约阅读时间需要 2 分钟。

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

概念

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

* for..in循环
* Object.keys方法
* JSON.stringify方法

enumerable “隐身术”

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

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

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

转载于:https://www.cnblogs.com/huenchao/p/6206261.html

你可能感兴趣的文章
【leetcode】124. Binary Tree Maximum Path Sum
查看>>
Flex实现 WebQQ那白云草地主题,云朵飘!
查看>>
安装meteor运行基本demo发生错误。
查看>>
Hibernate之QBC .HQL 查询
查看>>
当程序执行时间很快,控制台没显示执行代码和数据库
查看>>
为什么一般的性能测试要在局域进行?
查看>>
Linux 系统目录;
查看>>
[Android Studio 权威教程]断点调试和高级调试
查看>>
阶乘求和之最后一位
查看>>
Eclipse 乱码解决方案(UTF8 -- GBK)
查看>>
网络编程
查看>>
Debian安装Chrome
查看>>
民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?【转】...
查看>>
使用别的电脑连接另一台电脑当中的虚拟机中的kylin项目
查看>>
空间统计笔记之二(分布模式工具集,Analyzing Patterns Toolset)
查看>>
一定要为了成功才去创业吗?
查看>>
4.2 列表生成式、迭代器与生成器
查看>>
Sql Server系列:分区表操作
查看>>
myeclipse maven tomcat插件 创建web工程
查看>>
2.java线程之ThreadLocal
查看>>