在javascript中修改子对象后,父对象中的属性是否会更改?

时间:2015-01-27 12:33:46

标签: javascript inheritance

youtube video(大约46:30) Douglas 举一个对象继承的例子:

myNewObject继承自myOldObject enter image description here

如果已修改myNewObject.name,则幻灯片中的myOldObject.name不会更改。 enter image description here

但我自己尝试了以下片段:

<script>
    var a = {name:"John",age:5}
    var b = Object(a)
    b.name = "Ted"
    b.age = 6

    console.log(a)
    console.log(b)
</script>

输出显示,不仅a.namea.age发生了变化,而b.nameb.age也发生了变化:

enter image description here

道格拉斯错了吗?还是有什么我想念的?因为如果他错了,这是一个很大的错误。

2 个答案:

答案 0 :(得分:0)

您没有继承该对象。 Check out MDN

  var a = {name:"John",age:5};
  var b={};
  b.prototype= Object(a.prototype);
  b.name = "Ted";
  b.age = 6;

  console.log(a);
  console.log(b);

http://jsbin.com/rudigazofa/1/watch?html,js,console

答案 1 :(得分:0)

&#13;
&#13;
 var a = {
   name: "John",
   age: 5
 }
 var b = Object.create(a)
 b.name = "Ted"
 b.age = 6

 console.log(a)
 console.log(b)
&#13;
&#13;
&#13;

只需使用Object.create代替object()方法。