JS可枚举属性

1.什么是枚举

  1. 可枚举可以理解为是否可以被遍历被列举出来,可枚举性决定了这个属性能否被for…in查找遍历到。
  2. js中基本包装类型的原型属性是不可枚举的(不可被 for…in… 遍历),比如:
    Boolean,NumberString三个的原型属性,或是 Boolean,Number值,都是不可枚举的,即是基本类型,也是引用类型。基本包装类型还可以像引用类型一样访问它自带的一些方法,但是不能像引用类型那样自定义方法。

2.判断属性是否可枚举的方法

2.2 for…in…

var num = new Number();
for(var pro in num) {
    console.log("num." + pro + " = " + num[pro]);
}

无法打印,number中的属性无法被枚举,所以 for…in…不起作用

注意:

  • 并不是所有的属性都会在for-in循环中显示。数组的 length 属性和 constructor 属性就不会被显示。

2.1 Object.propertyIsEnumerable()

  • propertyIsEnumerable( ) 方法返回一个布尔值,表示属性是否可以枚举
  • 每个对象都有一个propertyIsEnumerable方法。该方法可以确定对象中的指定属性是否可以通过for…in循环枚举,但通过原型链继承的属性除外。如果对象不具有指定的属性,则此方法返回false。
语法
  • obj.propertyIsEnumerable(prop),prop:表示要测试的属性名称
  • 返回值:Boolean类型
//例一:
var obj = {}
obj.propertyIsEnumerable('a') //false

//例二:
var obj = {a:1}
obj.propertyIsEnumerable('a') //true
  • 简单来说,用户定义的属性都是可枚举的,而内置对象不可枚举。
  • 一种情况除外:当属性是继承于其它对象原型时,这时用户定义的属性就是不可枚举的
  • 17
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值