1: 一个对象的 原型链 中 如果设置了set,get方法的属性, 则该对象会自动写入此属性.
2: 代码如下
let test = {
a:1,b:2
}
Object.defineProperty(test,'a',{
set(){
return 'set'
},
get(){
return 'get'
}
})
let o = {};
o.__proto__ = test;
3: 在控制台中查看 o
4: 为什么o对象也有了a属性?
眼见不一定为实……
不信你
Object.getOwnPropertyDescriptor(o, 'a')
与Object.getOwnPropertyDescriptor(test, 'a')
分别执行试试。这应该只是chrome的调试工具为了方便显示打造的效果,firefox下就不会出现这种情况。