为了账号安全,请及时绑定邮箱和手机立即绑定

继承问题 :求指教

继承问题 :求指教

撒科打诨 2019-03-12 19:18:57
 function SuperType(){        this.name='s;'        this.colors = ["red", "blue", "green"];    }        function SubType(){                }        //inherit from SuperType    SubType.prototype = new SuperType();    var instance1 = new SubType();    var instance2 = new SubType();    instance1.name='ssss';    instance1.colors=["red", "blue"];    alert(instance1.colors);    //"red,blue,green,black"    alert(instance1.name);      //"ssss"    alert(instance2.colors);    //"red,blue,green,black"    alert(instance2.name);      //"s"instance2.name 为什么没有改变   function SuperType(){        this.name='sdsd';        this.colors = ["red", "blue", "green"];    }    function SubType(){          //inherit from SuperType        SuperType.call(this);    }    var instance1 = new SubType();    instance1.colors.name='aaaaaaa';     instance1.colors.push("black");    alert(instance1.colors);    //"red,blue,green,black"    alert(instance1.name);      //"a"    var instance2 = new SubType();    instance2.colors.name='bbbbbbb';     alert(instance2.colors);    //"red,blue,green"    alert(instance2.name);     //"a"instance2.name和instance1.name 都没有改变
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

  1. 读(console.log(a.key))和写(a.key = 1)的时候是不一样的,读的时候会一直查下去,写的时候发现本身没有就直接创建赋值了。

  2. new SubType()时this指向当前新创建的instance,所以产出为{name, colors}。那你改对colors添加name是不会影响到name属性的。


查看完整回答
反对 回复 2019-03-23
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信