更新時(shí)間:2021年05月18日15時(shí)04分 來源:傳智教育 瀏覽次數(shù):
JavaScript是一種通過原型實(shí)現(xiàn)繼承的語言與別的高級(jí)語言是有區(qū)別的,像java,C#是通過類型決定繼承關(guān)系的,JavaScript是的動(dòng)態(tài)的弱類型語言,總之可以認(rèn)為JavaScript中所有都是對(duì)象,在JavaScript中,原型也是一個(gè)對(duì)象,通過原型可以實(shí)現(xiàn)對(duì)象的屬性繼承,JavaScript的對(duì)象中都包含了一個(gè)“prototype”內(nèi)部屬性,這個(gè)屬性所對(duì)應(yīng)的就是該對(duì)象的原型。
“prototype”作為對(duì)象的內(nèi)部屬性,是不能被直接訪問的。所以為了方便查看一個(gè)對(duì)象的原型,F(xiàn)irefox和Chrome內(nèi)核的JavaScript引擎中提供了“proto”這個(gè)非標(biāo)準(zhǔn)的訪問器(ECMA新標(biāo)準(zhǔn)中引入了標(biāo)準(zhǔn)對(duì)象原型訪問器“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通常用來解決一個(gè)問題:對(duì)象的創(chuàng)建比較耗費(fèi)資源。比如,對(duì)象創(chuàng)建的時(shí)候需要訪問數(shù)據(jù)庫、需要讀取外部文件、需要使用網(wǎng)絡(luò),這些都是比較耗費(fèi)時(shí)間和內(nèi)存的。如果可以用clone來解決,就方便多了。當(dāng)需要?jiǎng)?chuàng)建很多 擁有相同屬性的對(duì)象時(shí)候需要clone。
猜你喜歡:
北京校區(qū)