hohocj 2019-10-19 13:40 采纳率: 0%
浏览 229

原型链下层为上层添加属性时无法添加,显示为undefined??

            var myobj={
                get a(){
                    return this._a_;
                },
                set a(val){
                    this._a_=val;
                }
            };
            var obj=Object.create(myobj);
            obj.a=6;
            console.log(obj.a);//6
            console.log(obj.hasOwnProperty("a"));//false
            console.log(myobj.a);//undefined
            console.log(myobj.hasOwnProperty("a"));//true
          console.log(obj.__proto__);
            console.log(myobj);
            console.log(obj);

下面是输出结果图片说明
可以看到,obj.__proto__与myobj相同,而单独在obj中查看它的__proto__又与输出来的不一样??这是为啥呢?不是把obj关联到了myobj上面吗?
obj.a=6,到底是存到哪里去了?
有那个大佬能回答一下吗?萌新一个,自学前端中,有点难a

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-10-19 14:16
    关注

    obj 是 Object.create 浅拷贝出来的新对象,它的属性值 a 是自己的。
    而原来旧的对象 objObj 还是旧的。但是如果反着来的话,myobj 先设置 a 属性了,然后 create 创建出来的新对象也是具有该值的,这就是复制的好处,直接获取原对象的属性及方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题