高程第三版中谈到 enumerable特性时说为false时不能使用for-in遍历,想起自己常用的还有Object.keys()遍历,心中起了疑惑,实例如下
var p1={name:'名字};
for(var key in p1){
console.log(key) //"name"
}
Object.defineProperty(p1,'name',{enumerable:false})
for(var key in p1){
console.log(key) //无输出
}
console.log(Object.keys(p1)) //[]
console.log(JSON.stringify(p1)) //"{}"
enumerable为false时,实际上 for-in、Object.keys()就连JSON.stringify都无法遍历到该属性;
备注:JSON.stringify()用于遍历对象学习自# js对象中什么是可枚举性(enumerable)?