在所有面向?qū)ο蟮木幊讨校^承是一個重要的話題。一般說來,在設(shè)計(jì)類的時候,我們希望能減少重復(fù)性的代碼,并且盡量弱化對象間的耦合(讓一個類繼承另一個類可能會導(dǎo)致二者產(chǎn)生強(qiáng)耦合)。關(guān)于“解耦”是程序設(shè)計(jì)中另一個重要的話題,本篇重點(diǎn)來看看在javascript如何實(shí)現(xiàn)繼承。
其它的面向?qū)ο蟪绦蛟O(shè)計(jì)語言都是通過關(guān)鍵字來解決繼承的問題(比如extend或inherit等方式)。但是javascript中并沒有定義這種實(shí)現(xiàn)的機(jī)制,如果一個類需要繼承另一個類,這個繼承過程需要程序員自己通過編碼來實(shí)現(xiàn)。
一、類式繼承的實(shí)現(xiàn)
1、創(chuàng)建一個類的方式:
1 //定義類的構(gòu)造函數(shù) 2 function Person(name) { 3 this.name = name || '默認(rèn)姓名'; 4 } 5 //定義該類所有實(shí)例的公共方法 6 Person.prototype.getName = function() { 7 return this.name; 8 } 9 10 var smith = new Person('Smith');11 var jacky = new Person('Jacky');12 13 console.log( smith.getName(), jacky.getName() ); //Smith Jacky
2、繼承這個類:這需要分兩個步驟