ES 6 中,增加了对象可枚举属性的修改
var
p=
new
Person();
Object.defineProperty(p,
"sex"
, {
value:
"female"
,
enumerable:
false//是否枚举
});
对于可枚举属性,以下方法中获取得到
1,for…in循环:只遍历对象自身的和继承的可枚举的属性。
2,Object.keys():返回对象自身的所有可枚举的属性的键名。
3,JSON.stringify():只串行化对象自身的可枚举的属性。
4,Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。
其中,for…in会把继承的可枚举属性也列出来,为了避免这种情况,可通过以下方法解决:
for(var i in p){
// 是否自身属性
if(!p.hasOwnProperty(i)){
continue
}
console.log(p[i])}
Leave a Reply