基於類(Java)和基於原理(JavaScript)的對象系統的比較

  Java:面向對象編程語言,吸取了C++語言的各類優勢,丟掉了C++讓人頭疼的多繼承、指針等概念。具備功能強大和簡單易用的兩大特徵。Java具備簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特色。java

  JavaScript:直譯式腳本語言,一種動態類型、弱類型、基於原型的語言,內置支持類型。其解釋器叫作JavaScript引擎,是瀏覽器的一部分,較多的用在客戶端的腳本語言。是一種解釋性腳本語言、可爲頁面添加交互行爲、可直接嵌入HTML頁面、具備跨平臺型,可在多種平臺下運行。編程

  基於類(Java)和基於原理(JavaScript)的對象系統的比較:數組

基於類的(java) 基於原型的(JavaScript)
類和實例是不一樣的事物。  全部對象均爲實例。
經過類定義來定義類;經過構造器方法來實例化類。 經過構造器函數來定義和建立一組對象。
經過 new 操做符建立單個對象。 經過 new 操做符建立單個對象。
經過類定義來定義現存類的子類,從而構建對象的層級結構。 指定一個對象做爲原型而且與構造函數一塊兒構建對象的層級結構
遵循類鏈繼承屬性。 遵循原型鏈繼承屬性。
類定義指定類的全部實例的全部屬性。沒法在運行時動態添加屬性 構造器函數或原型指定初始的屬性集。容許動態地向單個的對象或者整個對象集中添加或移除屬性

  舉個栗子(Employee):瀏覽器

  1.Employee的層級結構:安全

     

    

  • Employee 具備 name 屬性(默認值爲空的字符串)和 dept 屬性(默認值爲 "general")。
  • Manager 是 Employee的子類。它添加了 reports 屬性(默認值爲空的數組,以 Employee 對象數組做爲它的值)。
  • WorkerBee 是 Employee的子類。它添加了 projects 屬性(默認值爲空的數組,以字符串數組做爲它的值)。
  • SalesPerson 是 WorkerBee的子類。它添加了 quota 屬性(其值默認爲 100)。它還重載了 dept 屬性值爲 "sales",代表全部的銷售人員都屬於同一部門。
  • Engineer 基於 WorkerBee。它添加了 machine 屬性(其值默認爲空的字符串)同時重載了 dept 屬性值爲 "engineering"。

  2.下面關於 Employee 的 Java 和 JavaScript 的定義是很是相似的。惟一的不一樣是在 Java 中須要指定每一個屬性的類型,而在 JavaScript 中則不須要,同時 Java 的類必須建立一個顯式的構造器方法。多線程

    

  3.ManagerWorkerBee 的定義表示在如何指定繼承鏈中上一層對象時,二者存在不一樣點。在 JavaScript 中,您會添加一個原型實例做爲構造器函數prototype 屬性的值,而這一動做能夠在構造器函數定義後的任意時刻執行。而在 Java 中,則須要在類定義中指定父類,且不能在類定義以外改變父類。編程語言

    

  4.在對EngineerSalesPerson 定義時,建立了繼承自 WorkerBee 的對象,該對象會進而繼承自Employee。這些對象會具備在這個鏈之上的全部對象的屬性。另外,它們在定義時,又重載了繼承的 dept 屬性值,賦予新的屬性值。分佈式

    

相關文章
相關標籤/搜索