概念
可枚举性(enumerable)用来控制所描述的属性,是否将被包括在for…in循环之中。具体来说,如果一个属性的enumerable为false,下面三个操作不会取到该属性。 * for..in循环 * Object.keys方法 * JSON.stringify方法
代码语言:javascript复制var 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}"var ab = Object.getOwnPropertyNames(o); console.log(ab) // (4) ["a", "b", "c", "d"] // 0 // : // "a" // 1 // : // "b" // 2 // : // "c" // 3 // : // "d" // length // : // 4 // __proto__ // : // Array(0)上面代码中,d属性的enumerable为false,所以一般的遍历操作都无法获取该属性,使得它有点像“秘密”属性,但还是可以直接获取它的值。至于for...in循环和Object.keys方法的区别,在于前者包括对象继承自原型对象的属性,而后者只包括对象本身的属性。如果需要获取对象自身的所有属性,不管enumerable的值,可以使用Object.getOwnPropertyNames方法
Jetbrains全家桶1年46,售后保障稳定
代码语言:javascript复制版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。 发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/222919.html原文链接:https://javaforall.cn 【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛 【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...