鍍金池/ 問答/HTML/ 這樣寫js繼承跟 js寄生組合式繼承相比會有什么問題嗎?

這樣寫js繼承跟 js寄生組合式繼承相比會有什么問題嗎?

    function Sup(){
        this.name = 'adc';
        this.arr = [1,2,3];
    }

    Sup.prototype.say = function(){
        console.log(this.arr)
    }

    function Sub(){
        Sup.call(this)
    }

    Sub.prototype = Sup.prototype

    var c1 = new Sub()
    var c2 = new Sub()
回答
編輯回答
帥到炸

引用問題
直接賦值Sub.prototypeSup.prototype指向同一個內(nèi)存地址
所有兩者會相互影響 在Sub中定義的原型方法Sup也會有
一般這樣:Sub.prototype = Object.create(Sup.prototype)

2018年9月18日 13:35
編輯回答
朽鹿

樓上正解
問題很大,你想給Sub添加一個公用方法,會直接添加到Supprototype上,就相當(dāng)于給子添加方法卻修改了父的原型。如果你再有一個Sub1,那么Sub1也會擁有你添加的方法,這肯定不是我們預(yù)期的。

2017年2月9日 19:13