原因是,雖然我們可以在Javascript中使用僞古典繼承,但實際上我們必須實現我們自己的extend
或inherit
。在ECMA-262或ECMA 5.1之前,Javascript是否沒有僞古典繼承或原型繼承支持?
怎麼樣的原型繼承 - 我認爲它確實有此功能,如果使用foo.bar
,如果bar
不是foo
屬性,解釋或編譯的代碼(例如,如果使用谷歌V8)將上升原型鏈,但沒有內置的方法使對象b
的隱藏原型屬性指向a
作爲原型鏈。我們必須通過定義clone()
函數或Object.create()
來添加它。更重要的是,我認爲我在純原型繼承代碼中看到沒有任何構造函數。所以它看起來像在原型代碼中,沒有構造函數(構造函數)。但是如果我們使用原型繼承,我們實際上必須使用構造函數來實現clone()
--這更像是僞經典繼承方面。
因此,似乎原來的Javascript實際上既不是僞古典也不是Prototypal繼承?根據this Wikipedia article的說法,我認爲它需要在10天內上市,否則會有更糟的情況出現在市場上。但是我也想知道爲什麼1995年Javascript出現後的1年或2年,至少Netscape版本的Javascript沒有添加extend
和Object.create()
方法?
這個問題旨在理解和闡明Javascript的僞古典和原型部分的一些概念。這是真的 - 原來的Javascript本身不具備僞古典或原型繼承支持?
+1的歷史解釋...順便說一句,唯一有道理的... – opensas