mozilla
您的搜尋結果

    沒有多重繼承

    沒有多重繼承

    部分物件導向語言允許多重繼承。也就是說,物件可以從互不相關的親物件繼承屬性和值。不過 JavaScript 並不支援多重繼承。

    屬性值的繼承發生在執行時期,由 JavaScript 搜尋物件的原型鏈以找出繼承值。由於物件只有單一的已連結原型,因此 JavaScript 並不能從多於一個以上的原型鏈中動態的繼承。

    在 JavaScript 中,建構子函數的內部可以有很多個其他的建構子函數的呼叫。如此可提供多重繼承的假象。例如,思考下面的語句︰

    function Hobbyist (hobby) {
       this.hobby = hobby || "scuba";
    }
    
    function Engineer (name, projs, mach, hobby) {
       this.base1 = WorkerBee;
       this.base1(name, "engineering", projs);
       this.base2 = Hobbyist;
       this.base2(hobby);
       this.machine = mach || "";
    }
    Engineer.prototype = new WorkerBee;
    
    dennis = new Engineer("Doe, Dennis", ["collabra"], "hugo")
    

    接著假定 WorkerBee 的定義使用的是本章先前的內容。在這個情況下,dennis 物件就有了這些屬性︰

    dennis.name == "Doe, Dennis"
    dennis.dept == "engineering"
    dennis.projects == ["collabra"]
    dennis.machine == "hugo"
    dennis.hobby == "scuba"
    

    所以 dennisHobbyist 建構子中得到了 hobby 的屬性。然而,假定你稍後把新的屬性加入到 Hobbyist 建構子的原型︰

    Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]
    

    dennis 物件並未繼承到這個新的屬性。

    Document Tags and Contributors

    Contributors to this page: happysadman, teoli
    最近更新: teoli,