小羊也疯狂 2018-05-24 15:11 采纳率: 100%
浏览 1051
已采纳

实例中为什么不能修改原型基础类型的值?

child原型继承father 一个this.name='father' 一个this.play=[1,2,3]
结论我知道,以前没深究,现在想想感觉有点懵,根据我的理解:
child1 和 child2实例化的时候除了有child的内容,应该还有一个_proto_指针,
指向内存上的同一个区域1(原型father所在地).
father的play指针指向内存另外一片区域2的[1,2,3],所以子类共享它,这个好理解

但是改child1.name的时候,我认为改的是区域1,name区段上的内容,
由于child2的_proto_还是指向这片区域,那么child2.name也应该是访问区域1,name区段上的内容,那么也应该被改了呀?不知道理解哪里有问题,求指点

访问原型中基本值类型时访问的是它的映射副本,对基本值类型的修改只在这个实例下有用

这是知乎上的一个人的答案,这个映射副本怎么理解,不懂

child1,2访问的原型都是同一个,不管是引用类型,还是基础类型,改变以后,另外一个再访问肯定也是改变了的呀。除非说是child1访问的是原型对象的前拷贝1,child1访问的是原型对象的前拷贝2,那我就懂了,但是这种情况下
child1._proto_===child1._proto_为什么成立?前拷贝1===前拷贝2?还是说这个_proto指的是仅仅是原型,不是原型的浅拷贝

  • 写回答

4条回答

  • qq_33017319 2018-05-26 08:21
    关注

    实例虽然可以访问原型中的值,但不能通过对象实例重写原型中的值,如果我们在实例中添加了一个属性,而该属性与原型中的值同名,
    那么就会在该实例中创建该属性,该属性就会屏蔽原型中的同名属性(原型中还是存在的,只不过在访问时会先访问实例的属性),下面有图片便于理解
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)