JS中对象属性的可枚举性

在JS中,对象的属性分为可枚举和不可枚举,它是由属性的enumerable值决定的,true为可枚举,false为不可枚举

JS中预定义的原型属性一般是不可枚举的,而自己定义的属性一般可枚举

可以通过propertyIsEnumerable方法判断该属性是否可枚举

属性的枚举性会影响以下三个函数的结果:

for ... in ...

Object.keys()

JSON.stringify()

例子:

function Person(){
	this.name = 'kong';
}
Person.prototype = {
	age : 18,
	job : 'student'
}
var a = new Person();
Object.defineProperty(a, 'sex', {
	value : 'men',
	enumerable : false		//定义该属性不可枚举
})

//for in
for(var k in a){
	console.log(k);
}
//name age job

//Object.keys()
console.log(Object.keys(a));
//['name']

//JSON.stringify()
console.log(JSON.stringify(a));
//{'name' : 'kong'}

//propertyIsEnumerable方法判断该属性是否可枚举
console.log(a.propertyIsEnumerable('name'));	//true
console.log(a.propertyIsEnumerable('age'));		//false
console.log(a.propertyIsEnumerable('sex'));		//false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值