教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

js中的原型(prototype)是什么?如何理解?

更新時(shí)間:2021年05月18日15時(shí)04分 來(lái)源:傳智教育 瀏覽次數(shù):

JavaScript是一種通過(guò)原型實(shí)現(xiàn)繼承的語(yǔ)言與別的高級(jí)語(yǔ)言是有區(qū)別的,像java,C#是通過(guò)類型決定繼承關(guān)系的,JavaScript是的動(dòng)態(tài)的弱類型語(yǔ)言,總之可以認(rèn)為JavaScript中所有都是對(duì)象,在JavaScript中,原型也是一個(gè)對(duì)象,通過(guò)原型可以實(shí)現(xiàn)對(duì)象的屬性繼承,JavaScript的對(duì)象中都包含了一個(gè)“prototype”內(nèi)部屬性,這個(gè)屬性所對(duì)應(yīng)的就是該對(duì)象的原型。

“prototype”作為對(duì)象的內(nèi)部屬性,是不能被直接訪問(wèn)的。所以為了方便查看一個(gè)對(duì)象的原型,F(xiàn)irefox和Chrome內(nèi)核的JavaScript引擎中提供了“proto”這個(gè)非標(biāo)準(zhǔn)的訪問(wèn)器(ECMA新標(biāo)準(zhǔn)中引入了標(biāo)準(zhǔn)對(duì)象原型訪問(wèn)器“Object.getPrototype(object)”)原型的主要作用就是為了實(shí)現(xiàn)繼承與擴(kuò)展對(duì)象。


什么時(shí)候用prototype?

使用 prototype的好處是不會(huì)額外產(chǎn)生內(nèi)存,所有實(shí)例化后的對(duì)象都會(huì)從原型上繼承這個(gè)方法。也就是需要一個(gè)子類擁有父類的某些特性(同種特性可以覆蓋),又可以添加自己的特性,而不會(huì)影響父類時(shí)候使用prototype。

Prototype通常用來(lái)解決一個(gè)問(wèn)題:對(duì)象的創(chuàng)建比較耗費(fèi)資源。比如,對(duì)象創(chuàng)建的時(shí)候需要訪問(wèn)數(shù)據(jù)庫(kù)、需要讀取外部文件、需要使用網(wǎng)絡(luò),這些都是比較耗費(fèi)時(shí)間和內(nèi)存的。如果可以用clone來(lái)解決,就方便多了。當(dāng)需要?jiǎng)?chuàng)建很多 擁有相同屬性的對(duì)象時(shí)候需要clone。

HTML&JS+前端課程


猜你喜歡:

js如何將json字符串轉(zhuǎn)換為json對(duì)象?

常見(jiàn)的js中的繼承方法有哪些?

Js變量命名規(guī)范

變量是什么?JavaScript變量的命名聲明與賦值講解

傳智教育HTML&JS+前端培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!