爲何JavaScript沒有類而使用原型?——JavaScript語言特性來歷

問題

JS中的面向對象、原型繼承等特性不一樣於Java等其餘面嚮對象語言,初看起來很是怪異:javascript

  • 爲何JS中有new操做符、構造函數,卻沒有類?
  • 爲何JS中使用原型,用原型來模擬類和繼承看起來很彆扭?

參考了講述JS誕生歷史的幾篇文章後,我總算了解這些特性的來歷,簡單總結以下。html

JS誕生狀況

  • Brendan Eich(JS發明者)要在10天內完成JS的設計,任務時間緊迫。
  • JS的初衷只是用於表單檢驗、狀態欄滾動消息等簡單功能,設計要簡單輕量傻瓜,Brendan Eich並未預料到往後JS會如此流行、重量化、複雜化。
  • 出於網景公司的高層命令和營銷考慮,JS要像Java但又不能太像,要作一個傻瓜式的、用在網頁中的類Java小弟腳本語言。
  • 除了Java,Brendan Eich出於設計考慮、我的興趣等緣由還借鑑了C、Scheme、Self等語言。

JS語言特性來歷

瞭解了JS的誕生,JS爲何是這個樣子的也就一目瞭然了:java

  • 基本語法,如花括號、分號、關鍵字等 —— 借鑑C。
  • 對象、構造函數、new操做符 —— 借鑑Java。
  • 沒有類 —— 不能太像Java,不必複雜化。
  • 函數是一等公民 —— 借鑑Scheme。
  • 原型 —— 借鑑Self。

參考文章

相關文章
相關標籤/搜索