摘要:引言創(chuàng)建即繼承構(gòu)造函數(shù)繼承何為構(gòu)造函數(shù)如果你還不清楚構(gòu)造函數(shù)和普通函數(shù)的區(qū)別那請看構(gòu)造函數(shù)與普通函數(shù)構(gòu)造函數(shù)繼承構(gòu)造函數(shù)繼承的核心是或的使用通過這個方法改變函數(shù)的作用環(huán)境為父類添加方法聲明子類子類通過將子類中的變量在父類中執(zhí)行了一遍由
引言
創(chuàng)建即繼承---構(gòu)造函數(shù)繼承
何為構(gòu)造函數(shù)?如果你還不清楚構(gòu)造函數(shù)和普通函數(shù)的區(qū)別,那請看JavaScript構(gòu)造函數(shù)與普通函數(shù)
構(gòu)造函數(shù)繼承構(gòu)造函數(shù)繼承的核心 是 call() 或 apply() 的使用,通過這個方法,改變函數(shù)的作用環(huán)境.
function SuperClass(name){ this.name =name; this.book = ["c","java","htnl"] this.getBook =function(){ return this.book; } } //為父類添加方法 SuperClass.prototype.getName =function(){ return this.name; } //聲明子類 function SubClass(name){ SuperClass.call(this,name) } var a = new SubClass("demongao"); var b = new SubClass("gsc"); a.book.push("cccc"); console.log(a.book,a.name); //["c", "java", "htnl", "cccc"] "demongao" console.log(b.book,b.name); //["c", "java", "htnl"] "gsc" console.log(a.getBook()); //["c", "java", "htnl", "cccc"] console.log(a.getName()) //TypeError
???????子類通過 SuperClass.call(this,name) 將子類中的變量在父類中執(zhí)行了一遍,由于父類中是給 this 綁定屬性的,因此子類自然也就繼承了父類的共有屬性.
???????由于這種類型的繼承沒有涉及原型prototype,所以父類的原型方法自然不會被子類繼承,而如果想被子類繼承就必須要放在構(gòu)造函數(shù)中,這樣創(chuàng)建出來的每個實例都會多帶帶擁有一份而不能共用,這就違背了代碼復用的原則
下一節(jié)講解 組合繼承 ,它具備上兩種繼承式的優(yōu)點
參考個人博客
JavaScript 設(shè)計模式 --- 張容銘 著
注本人對類式繼承的一點點理解,若是那里解釋的有問題,請多指教,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81583.html
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:那你們肯定會問為什么共用,而沒有共用呢,下面就給你解釋,請看引用類型是共用的值類型是私用的。 引言 面向?qū)ο蟮木幊陶Z言都具繼承這一機制,而 JavaScript 是基于原型(Prototype)面向?qū)ο蟪绦蛟O(shè)計,所以它的實現(xiàn)方式也是基于原型(Prototype)實現(xiàn)的. 繼承的方式 類式繼承 構(gòu)造函數(shù)繼承 組合繼承 原型式繼承 寄生式繼承 寄生組合式繼承 1.類式繼承 //聲明父...
摘要:是完全的面向?qū)ο笳Z言,它們通過類的形式組織函數(shù)和變量,使之不能脫離對象存在。而在基于原型的面向?qū)ο蠓绞街校瑢ο髣t是依靠構(gòu)造器利用原型構(gòu)造出來的。 JavaScript 函數(shù)式腳本語言特性以及其看似隨意的編寫風格,導致長期以來人們對這一門語言的誤解,即認為 JavaScript 不是一門面向?qū)ο蟮恼Z言,或者只是部分具備一些面向?qū)ο蟮奶卣鳌1疚膶⒒貧w面向?qū)ο蟊疽猓瑥膶φZ言感悟的角度闡述為什...
閱讀 2414·2021-11-24 09:39
閱讀 3241·2021-10-09 09:53
閱讀 1135·2021-09-22 16:06
閱讀 4453·2021-09-02 10:18
閱讀 803·2021-08-23 09:42
閱讀 1766·2021-08-17 10:11
閱讀 2689·2019-08-30 13:02
閱讀 2125·2019-08-30 12:49