男怕选错行 2018-11-23 03:54 采纳率: 9.1%
浏览 864
已结题

JS子类继承父类那些事

图片说明 我想问的是为什么es5修改了父类的属性,但是依然es6返回值还是true呢???

  • 写回答

3条回答 默认 最新

  • 关注

    要实现继承,就必须保证实例对象的修改不能影响被继承者自身。

    new 过程,实际上就是创建一个新对象的过程。所以不管你之后var 的es5还是es6,实际上都是创建了2个新的实例对象。

    你修改es5的flag 并不会影响到es6的flag

    要想修改父类的属性,可以这么写

    var es5 = Sub // 将es5的引用指向Sub
    es5.flag = false // 修改es5的flag 实际上修改的是 es5和Sub 的同一引用

    var es6 = new Sub()
    console.log(es6.flag) // false

    评论

报告相同问题?