1 回答

TA貢獻1824條經驗 獲得超5個贊
JavaScript 是面向對象的語言,引用數據類型都是對象,包括函數也是對象,同時還可以通過 Object 對象自定義對象。
但是,和其他面向對象語言(如 Java 等高級語言)比,也有很大差異,JS 中沒有類或接口的概念,即不能直接定義抽象的類,也不能直接實現繼承。不過,為了編程的方便,我們可以在 JS 中模擬類和繼承的行為。
創建對象實例或類(雖然沒有類的概念,但是可以把用于創建新對象的對象看作類),可以通過構造函數來實現,構造函數就是具有一系列屬性和行為作為函數體的函數,可以通過函數參數傳入值。它就相當于 Java 中類的構造函數,需要時可以通過 var instanceObj = new ConstructorFunc(para1,para2,...) 來創建對象(實例)。
JS 的對象中還有一個重要概念,即原型。每個對象都有原型,原型也是一個對象,可以看做是構造函數的映像,是創建實例的模型。對象(類)的屬性 prototype 即是對原型對象的引用,創建實例后,也有屬性 __proto__ 指向原型對象,但該屬性是隱含的。
由于不斷創造新對象(實例),一級一級的傳遞原型對象,即可構成原型鏈。通過原型鏈,即可實現繼承。首先將父類對象的實例給子類的原型 ChildCons.prototype = new ParentCons(),再在子類構造函數中調用父類構造函數將繼承的屬性初始化。繼承的變通方法還有很多,可以參考一些資料。
添加回答
舉報