詳解一個小實例理解js原型和繼承
導(dǎo)語1:一個構(gòu)造函數(shù)的原型對象,其實就是這個構(gòu)造函數(shù)的一個屬性而已,屬性名叫prototype,值是一個對象,對象中有一些屬性和方法,所以每個構(gòu)造函數(shù)的實例對象都擁有這些屬性和方法的使用權(quán)。
導(dǎo)語2:構(gòu)造函數(shù)需要用 new 操作符來調(diào)用,它本身沒有任何意義,只有實例化后才有生命,當(dāng)然你也可以把它當(dāng)普通函數(shù)使用,那this就是指向window了(意義不大)。
導(dǎo)語3:對于構(gòu)造函數(shù)實例化出一個對象經(jīng)歷了什么?
我們看下面這個例子:
這個例子充分說明了,大佬們創(chuàng)造出構(gòu)造函數(shù)這種東西,是有特殊用處的,本身沒什么意義,在實例化后瞬間有了生命。
好了有這些準備工作后,我們開始寫一個構(gòu)造函數(shù)+原型用法
廢話不多說直接上代碼!?。?/p>
1,這個例子中有個構(gòu)造函數(shù),名字叫GetElem,參數(shù)期望傳入的是一個元素的id,可以獲取這個id的元素;
2,實例化一個叫domOne的對象,它傳入一個實參為:“old”;所以它可以獲取這個id為old的元素
3,在構(gòu)造函數(shù)的原型上定義一個方法叫:changeInner 作用是如果傳入了實參就用實參來改變元素的內(nèi)容
4,在構(gòu)造函數(shù)的原型上定義一個方法叫:on作用是根據(jù)事件類型和對應(yīng)函數(shù)干一些事情;
domOne這個實例化對象中并沒有這兩個方法,但是沒關(guān)系,它的原型對象上擁有?。。?!所以可以直接用;
您一定會問為何不直接把方法寫在構(gòu)造函數(shù)中不就省事了?原因是這樣的話,每實例化一個對象都要在實例化過程中創(chuàng)建這些方法,
如果實例化太多就消耗性能,而放在原型對象上就只需要做一次。這也是構(gòu)造函數(shù)+原型優(yōu)于工廠模式的方面。
最后一張圖:
方法可以鏈接起來寫的原因是 在每個方法中 return this (this指向的是實例對象,當(dāng)然可以繼續(xù)調(diào)用它可以調(diào)用的方法啦?。?!)
以上所述是小編給大家介紹的js原型和繼承詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript中條件語句的優(yōu)化技巧總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript中條件語句的優(yōu)化技巧,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12AJAX使用了UpdatePanel后無法使用alert彈出腳本
今天在做項目的時候發(fā)現(xiàn)個問題。。使用UpdatePanel后alert腳本就要報錯了。2010-04-04js的壓縮及jquery壓縮探討(提高頁面加載性能/保護勞動成果)
搞定js的加密和壓縮,一方面可以提高頁面加載性能,另外一方面也希望辛苦研發(fā)出來的成果得到一定的保護,感興趣的朋友可以了解下,或許對你有所幫助2013-01-01uniapp微信小程序訂閱消息發(fā)送服務(wù)通知超詳細教程
在使用或開發(fā)小程序過程中,我們會發(fā)現(xiàn)消息通知是非常重要的一個環(huán)節(jié),下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序訂閱消息發(fā)送服務(wù)通知的相關(guān)資料,需要的朋友可以參考下2023-06-06