摘要:問題中的面向對象原型繼承等特性不同于等其他面向對象語言,初看起來非常怪異為什么中有操作符構造函數,卻沒有類為什么中使用原型,用原型來模擬類和繼承看起來很別扭參考了講述誕生歷史的幾篇文章后,我總算了解這些特性的來歷,簡單總結如下。
問題
JS中的面向對象、原型繼承等特性不同于Java等其他面向對象語言,初看起來非常怪異:
為什么JS中有new操作符、構造函數,卻沒有類?
為什么JS中使用原型,用原型來模擬類和繼承看起來很別扭?
參考了講述JS誕生歷史的幾篇文章后,我總算了解這些特性的來歷,簡單總結如下。
JS誕生情況Brendan Eich(JS發明者)要在10天內完成JS的設計,任務時間緊迫。
JS的初衷只是用于表單檢驗、狀態欄滾動消息等簡單功能,設計要簡單輕量傻瓜,Brendan Eich并未預料到日后JS會如此流行、重量化、復雜化。
出于網景公司的高層命令和營銷考慮,JS要像Java但又不能太像,要做一個傻瓜式的、用在網頁中的類Java小弟腳本語言。
除了Java,Brendan Eich出于設計考慮、個人興趣等原因還借鑒了C、Scheme、Self等語言。
JS語言特性來歷了解了JS的誕生,JS為什么是這個樣子的也就一目了然了:
基本語法,如花括號、分號、關鍵字等 —— 借鑒C。
對象、構造函數、new操作符 —— 借鑒Java。
沒有類 —— 不能太像Java,沒必要復雜化。
函數是一等公民 —— 借鑒Scheme。
原型 —— 借鑒Self。
參考文章Javascript:10天設計一門語言
Javascript繼承機制的設計思想 - 阮一峰的網絡日志
Javascript誕生記 - 阮一峰的網絡日志
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97992.html
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:構造函數的兩個特征函數內部使用了,指向所要生成的對象實例。將一個空對象的指向構造函數的屬性,這個對象就是要返回的實例對象。用面向對象開發時,把要生成的實例對象的特有屬性放到構造函數內,把共有的方法放到構造函數的里面。 JS中面向對象的概念 面向對象OOP是一種組織代碼結構、實現功能過程的思維方式。它將真實世界各種復雜的關系,抽象為一個個對象,然后由對象之間的分工與合作,完成對真實世界的...
摘要:小程序微信把這個小程序框架稱為,并聲稱是在微信中開發小程序的框架。在小程序里面,對應的是和,注意雖然模式和很像,但是在形式上算是微信自己開發的一套所以你需要使用他們自己的標簽。 這篇文章將圍繞下面幾個方面: 從開發模式(過程)上對比Android和小程序,比較兩種模式的異同 從實現功能上對比,主要是看看微信小程序的局限 自己的一些看法,微信的優勢 開發過程上的對比 在我看來,開發一...
閱讀 1750·2021-09-28 09:43
閱讀 1111·2021-09-23 11:22
閱讀 2707·2021-09-14 18:05
閱讀 1823·2019-08-30 15:52
閱讀 2812·2019-08-30 10:55
閱讀 2007·2019-08-29 16:58
閱讀 1323·2019-08-29 16:37
閱讀 3031·2019-08-29 16:25