最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

JS中的安全類(lèi)、繼承與內(nèi)置構(gòu)造函數(shù)

2020-05-24 11:04 作者:MagnumHou  | 我要投稿

一、安全類(lèi)

無(wú)論外部如何調(diào)用(使用new關(guān)鍵字 或 ?當(dāng)作普通函數(shù))該類(lèi),都會(huì)返回一個(gè)類(lèi)的實(shí)例化對(duì)象

解決辦法:利用this指向進(jìn)行判斷

安全類(lèi)


二、繼承

繼承是面向?qū)ο笳Z(yǔ)言中最顯著的一個(gè)特征。

它是從已有的類(lèi)中派生出新的類(lèi),新的類(lèi)能吸收已有類(lèi)(基類(lèi)、父類(lèi))的數(shù)據(jù)(特征和行為),并拓展屬于自己的新的能力。


類(lèi):具有相同特征和行為的集合。

比如:人類(lèi)有姓名、年齡、性別、身高、體重等屬性,吃飯、睡覺(jué)、走路等等行為,所以人可以劃為一類(lèi)。

人類(lèi)這個(gè)大的范圍太廣了,我們還可以進(jìn)行細(xì)分,根據(jù)不同的劃分標(biāo)準(zhǔn)可以劃分出不同的小類(lèi):

按照膚色:黃種人 ? 白種人 ? 黑種人

按照國(guó)籍:中國(guó)人、法國(guó)人、美國(guó)人、俄羅斯等

按照工種:教師、學(xué)生、醫(yī)生、工人、農(nóng)民等等

........

在傳統(tǒng)的JS中不存在類(lèi)的概念,我們使用構(gòu)造函數(shù)模擬類(lèi),并通過(guò)一些方式實(shí)現(xiàn)類(lèi)與類(lèi)之間的繼承。


對(duì)象:從類(lèi)中拿出的具體特性和行為的個(gè)體。

比如:張三豐 ? 年齡23 ?性別男 ?黃種人 ? 國(guó)籍中華人民共和國(guó) ? 是一個(gè)醫(yī)生


類(lèi)和對(duì)象關(guān)系:

類(lèi)是對(duì)象的抽象化;

對(duì)象是類(lèi)的具體化。


傳統(tǒng)JS中提供了幾種繼承的方式:類(lèi)式繼承(原型繼承)、構(gòu)造函數(shù)式繼承(apply和call方法)、組合式繼承(前面兩種組合)、寄生式繼承(類(lèi)式繼承的優(yōu)化)、寄生組合式繼承(寄生繼承和組合繼承的結(jié)合)


2.1 類(lèi)式繼承

類(lèi)式繼承也叫原型繼承,將子類(lèi)的原型指向父類(lèi)實(shí)例化對(duì)象。

類(lèi)式繼承


類(lèi)式繼承瀏覽器操作

觀察上面控制臺(tái)信息,還是有一些地方需要優(yōu)化:

子類(lèi)的構(gòu)造函數(shù)指向了父類(lèi)需要優(yōu)化為指向子類(lèi)自己的構(gòu)造函數(shù)(上面代碼中解決)。

原型中有空的參數(shù)undefined需要優(yōu)化;

父類(lèi)和子類(lèi)有一些共同的參數(shù),需要優(yōu)化;



2.2 構(gòu)造函數(shù)式繼承

利用 apply 和 call 方法

構(gòu)造函數(shù)式繼承

構(gòu)造函數(shù)式繼承瀏覽器操作


這種方式對(duì) ? 父類(lèi)和子類(lèi)有一些共同的參數(shù),進(jìn)行了優(yōu)化;

當(dāng)調(diào)用父類(lèi)原型中的方法時(shí),報(bào)錯(cuò)。

說(shuō)明,這種方式不是真正的繼承。

但是,如果是在父類(lèi)函數(shù)中自帶的本地屬性和方法,可以直接調(diào)用。



2.3 組合式繼承

原型繼承 + ?aplly繼承

組合式繼承


組合式繼承

組合式繼承瀏覽器操作

這種方式解決的問(wèn)題:父子類(lèi)參數(shù)相同問(wèn)題,實(shí)現(xiàn)真正的繼承可以調(diào)用父類(lèi)原型中的方法。

依舊存在的問(wèn)題:在實(shí)例化對(duì)象的原型上,存在空的屬性。


2.4 寄生式繼承

封裝一個(gè)函數(shù),解決原型上空參數(shù)問(wèn)題。

寄生式繼承
寄生式繼承瀏覽器操作

解決的問(wèn)題:空參數(shù)

依舊存在的問(wèn)題:父子參數(shù)重復(fù)


2.5 寄生組合式繼承

這是我們建議的最終形態(tài),優(yōu)化程度較高。

寄生組合式繼承

寄生組合式繼承 瀏覽器操作

優(yōu)化了:空參數(shù)問(wèn)題 ?父子重復(fù)參數(shù)的問(wèn)題


2.5?ES5優(yōu)化

利用?Object.create() 方法優(yōu)化

Object.create()


2.6、ES6中的繼承

利用關(guān)鍵字?extends 和 super

?extends 實(shí)現(xiàn)繼承



三、內(nèi)置構(gòu)造函數(shù)

一種是由宿主環(huán)境所提供的構(gòu)造函數(shù):宿主環(huán)境就是JS代碼執(zhí)行的環(huán)境。目前所謂的宿主環(huán)境其實(shí)是瀏覽器環(huán)境。

Image對(duì)象

Image對(duì)象

另外一種就是ECMAScript核心語(yǔ)法提供的構(gòu)造函數(shù):Object ? ?Array ? String ? ?RegExp ? ?Date ? Function ?Number ? ?Boolean??

內(nèi)置構(gòu)造函數(shù)一
內(nèi)置構(gòu)造函數(shù)二


內(nèi)置構(gòu)造函數(shù)之間的關(guān)系

JS中除了undefined之外所有的東西都可以看作是對(duì)象,函數(shù)也是對(duì)象;

所有的對(duì)象又都可以看作是構(gòu)造函數(shù)Object的實(shí)例,Object構(gòu)造函數(shù)也是函數(shù);

所有的函數(shù)又是Function的實(shí)例;

內(nèi)置構(gòu)造函數(shù)之間的關(guān)系


如果你感覺(jué)up寫(xiě)的還不錯(cuò),請(qǐng)?jiān)谙路近c(diǎn)個(gè)贊,就是對(duì)up的最大支持;

如果在某些知識(shí)點(diǎn)上,有什么意見(jiàn)和建議,也可以提出來(lái)進(jìn)行探討。

個(gè)人微信公眾號(hào):前端知識(shí)分享喵

JS中的安全類(lèi)、繼承與內(nèi)置構(gòu)造函數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
耒阳市| 天等县| 财经| 商洛市| 林州市| 天门市| 扬中市| 德州市| 长治县| 重庆市| 万安县| 屏东县| 墨江| 漾濞| 绍兴市| 泊头市| 蒙山县| 子长县| 淮滨县| 托里县| 乌拉特前旗| 满洲里市| 绥德县| 成都市| 枣阳市| 建德市| 廊坊市| 苍溪县| 繁峙县| 五大连池市| 米林县| 南昌县| 河池市| 忻城县| 临安市| 安龙县| 乐山市| 南部县| 来凤县| 屏南县| 靖西县|