对象,原型链中有设置了set,get方法的属性. 则对象中也会自动写入此属性

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

clipboard.png
4: 为什么o对象也有了a属性?

阅读 4.1k
1 个回答

眼见不一定为实……

不信你Object.getOwnPropertyDescriptor(o, 'a')Object.getOwnPropertyDescriptor(test, 'a')分别执行试试。

这应该只是chrome的调试工具为了方便显示打造的效果,firefox下就不会出现这种情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题