溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

詳解一個(gè)小實(shí)例理解js原型和繼承

發(fā)布時(shí)間:2020-10-09 18:25:12 來源:腳本之家 閱讀:124 作者:凡塵yang 欄目:web開發(fā)

導(dǎo)語1:一個(gè)構(gòu)造函數(shù)的原型對(duì)象,其實(shí)就是這個(gè)構(gòu)造函數(shù)的一個(gè)屬性而已,屬性名叫prototype,值是一個(gè)對(duì)象,對(duì)象中有一些屬性和方法,所以每個(gè)構(gòu)造函數(shù)的實(shí)例對(duì)象都擁有這些屬性和方法的使用權(quán)。

導(dǎo)語2:構(gòu)造函數(shù)需要用 new 操作符來調(diào)用,它本身沒有任何意義,只有實(shí)例化后才有生命,當(dāng)然你也可以把它當(dāng)普通函數(shù)使用,那this就是指向window了(意義不大)。

導(dǎo)語3:對(duì)于構(gòu)造函數(shù)實(shí)例化出一個(gè)對(duì)象經(jīng)歷了什么?

我們看下面這個(gè)例子:

詳解一個(gè)小實(shí)例理解js原型和繼承

這個(gè)例子充分說明了,大佬們創(chuàng)造出構(gòu)造函數(shù)這種東西,是有特殊用處的,本身沒什么意義,在實(shí)例化后瞬間有了生命。

 好了有這些準(zhǔn)備工作后,我們開始寫一個(gè)構(gòu)造函數(shù)+原型用法

廢話不多說直接上代碼?。?!

 詳解一個(gè)小實(shí)例理解js原型和繼承

1,這個(gè)例子中有個(gè)構(gòu)造函數(shù),名字叫GetElem,參數(shù)期望傳入的是一個(gè)元素的id,可以獲取這個(gè)id的元素;

2,實(shí)例化一個(gè)叫domOne的對(duì)象,它傳入一個(gè)實(shí)參為:“old”;所以它可以獲取這個(gè)id為old的元素

3,在構(gòu)造函數(shù)的原型上定義一個(gè)方法叫:changeInner 作用是如果傳入了實(shí)參就用實(shí)參來改變?cè)氐膬?nèi)容

4,在構(gòu)造函數(shù)的原型上定義一個(gè)方法叫:on作用是根據(jù)事件類型和對(duì)應(yīng)函數(shù)干一些事情;

domOne這個(gè)實(shí)例化對(duì)象中并沒有這兩個(gè)方法,但是沒關(guān)系,它的原型對(duì)象上擁有啊?。?!所以可以直接用;

您一定會(huì)問為何不直接把方法寫在構(gòu)造函數(shù)中不就省事了?原因是這樣的話,每實(shí)例化一個(gè)對(duì)象都要在實(shí)例化過程中創(chuàng)建這些方法,

如果實(shí)例化太多就消耗性能,而放在原型對(duì)象上就只需要做一次。這也是構(gòu)造函數(shù)+原型優(yōu)于工廠模式的方面。

 最后一張圖:

 詳解一個(gè)小實(shí)例理解js原型和繼承

方法可以鏈接起來寫的原因是  在每個(gè)方法中  return this (this指向的是實(shí)例對(duì)象,當(dāng)然可以繼續(xù)調(diào)用它可以調(diào)用的方法啦!!!)

以上所述是小編給大家介紹的js原型和繼承詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI