整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
ES5 defineProperty
var obj = {a:1,b:2}
//在obj原型链上添加{c:4}
Object.setPrototypeOf(obj,{c:4})
Object.defineProperty(obj,"d",{
value:4,
writable:true,
enumerable:false,
configurable:true
})
console.log(obj)//{a:1,b:2} flag1
for(let key in obj){// a b c flag2
console.log(key)
}
这题的主要问题是我标记的
flag1处和flag2处打印为什么不同
flag1处:因为Object.defineProperty 添加的 d 属性,设置了不允许遍历,所以我们在读取时,也读不到 d 属性
falg2处:同理 d 属性不允许遍历