javascript可枚举和不可枚举

javascript对象中有一个属性分为可枚举和不可枚举,简单来说如果这个对象能够被for ... in 遍历到,那么这个对象就是可枚举,具体来说如果一个属性的enumerable为false,就是不可枚举,下面三个操作不会取到该属性。(所以判断是否枚举只需要看enumerable的值)

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

enumerable “隐身术”

var o = {a:1, b:2}

o.c=3

Object.defineProperty(o, 'd', {

   value: 4,

   enumerable: false

})

console.log(o.d)        //  4

for (let i in o) {

    console.log(o[i])

}

//  1 2 3

Object.keys      //   ['a','b','c']

JSON.stringify    //   "{a:1,b:2,c:3}"

如果enumerable改为true那么就可以这三个方法都可以获取,如果为false可以获取对象的值但是无法遍历到,至于for...in循环和Object.keys方法的区别,在于前者包括对象继承自原型对象的属性,而后者只包括对象本身的属性。如果需要获取对象自身的所有属性,不管enumerable的值,可以使用Object.getOwnPropertyNames方法



转载于:https://juejin.im/post/5a73ca3d6fb9a0636108481c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值