Knimet 2016-12-15 03:40 采纳率: 33.3%
浏览 841

关于javascript中对象继承的问题

问题在大犀牛那本书里的第125页,在讲解给对象属性赋值的时候有一句话说,“假设给对象o的属性x赋值,如果o中不存在属性x,那么赋值操作给o添加一个新属性x。如果之前o继承自属性x,那么这个继承的属性就被新创建的同名属性覆盖了”,这话我不光没能理解,实验也没能实现出来。。。
我写的测试代码如下:
AAA = {p:{x:1}};
BBB = inherit(AAA.p);
inherit()是继承的函数,书前面有提到,是正确无误的。上面的BBB继承自AAA的属性p,而且BBB中不存在属性p。
alert(BBB.x); //这里是1,正确
alert(BBB.p);//这里是undefined,正确
BBB.p = "a"; //现在给BBB的p属性赋值"a",BBB不包含p属性,所以给BBB添加了新属性p,并且赋值为"a";
alert(BBB.p); //a,正确
现在该怎么理解书上最后这句“那么这个继承的属性就被新创建的同名属性覆盖了”?实在是不能理解啊

  • 写回答

2条回答 默认 最新

  • 斯洛文尼亚旅游 2016-12-15 05:59
    关注

    你是继承AAA.p对象,p对象是{x:1},BBB当然没有p,你要有p应该是inherit(AAA)

    评论

报告相同问题?