大家好驰弄,我是IT修真院深圳分院第01期學(xué)員麻汰,一枚正直善良的web程序員。
今天給大家分享一下戚篙,修真院官網(wǎng) JS任務(wù)中可能會(huì)使用到的知識(shí)點(diǎn):
繼承有幾種方式五鲫,分別是什么?想要實(shí)現(xiàn)繼承可以使用什么方法岔擂?
1.背景介紹
起源:Simula67語(yǔ)言
對(duì)象:“無序?qū)傩缘慕Y(jié)合位喂,其屬性值可以包含基本值、對(duì)象或者函數(shù)”乱灵。
面向?qū)ο缶幊蹋∣OP):核心思想是將各種復(fù)雜關(guān)系塑崖,抽象成一個(gè)個(gè)對(duì)象,然后由對(duì)象之間的分工合作痛倚,完成對(duì)真實(shí)世界的模擬规婆。
2.知識(shí)剖析
JavaScript語(yǔ)言的對(duì)象體系,不是基于“類”蝉稳,而是基于構(gòu)造函數(shù)(constructor)和原型(prototype)
原型對(duì)象:只要?jiǎng)?chuàng)建一個(gè)新函數(shù)抒蚜,就會(huì)根據(jù)特定的規(guī)則為該函數(shù)創(chuàng)建一個(gè)prototype屬性指向其原型對(duì)象,默認(rèn)情況下原型對(duì)象會(huì)自動(dòng)獲得一個(gè)constructor屬性耘戚,該屬性包含一個(gè)指向prototype屬性所在函數(shù)的指針
構(gòu)造函數(shù):本身是一個(gè)函數(shù)嗡髓,出于創(chuàng)建特定類型新對(duì)象的目的而定義的,內(nèi)部使用this變量收津,需要和new配合使用來創(chuàng)建實(shí)例饿这,this變量會(huì)綁定在實(shí)例對(duì)象上浊伙。
封裝模式:將“屬性”和“方法”封裝成對(duì)象的模式,即創(chuàng)建對(duì)象的方式
繼承概念
許多OO語(yǔ)言都支持兩種繼承方式:接口繼承和實(shí)現(xiàn)繼承蛹稍,接口繼承只繼承方法簽名,實(shí)現(xiàn)繼承則繼承實(shí)際的方法
3.常見問題
js如何實(shí)現(xiàn)繼承部服?
4.解決方案
5.擴(kuò)展思考
ES6中JavaScript擁有類的概念了唆姐,參考java等語(yǔ)言思考JavaScript如何使用類來簡(jiǎn)化封裝、繼承廓八。
6.參考文獻(xiàn)
參考:JavaScript高級(jí)程序設(shè)計(jì)
7.更多討論
Q:繼承一般用到什么地方
A:通常在一般的項(xiàng)目里不需要奉芦,因?yàn)閼?yīng)用簡(jiǎn)單,但你要用純js做一些復(fù)雜的工具或框架系統(tǒng)就要用到了剧蹂,比如webgis声功、或者js框架如jquery、angular宠叼、vue什么的先巴,不然一個(gè)幾千行代碼的框架不用繼承得寫幾萬行,甚至還無法維護(hù)