Javascript面向物件:建構函式的繼承
阿新 • • 發佈:2021-08-14
建構函式的繼承
現在有一個Father建構函式
functionFather(name,age){ this.name=name; this.age=age; } Father.prototype.song=function(){ console.log(‘父親的原型物件函式’) }還有一個Son建構函式
functionSon(name,age){ this.name=name; this.age=age; }1.首先用call或者apply方法,將父物件的建構函式繫結在子物件上。
functionSon(name,age){ Father.call(this,name,age) this.name=name; this.age=age; } /**{原型繼承部分程式碼位置}**/var son = new Son("兒子","12");
alert(son.name); //兒子
注意:此時子級繼承了父級的建構函式,但是沒有繼承父級的原型物件。也就是son.song()會報錯,提示沒有song這個方法。
2.子級繼承父級的原型物件上的方法。
步驟一:Son.prototype =Father.prototype;
步驟二:Son.prototype.constructor = Son;
var son= new Son("兒子","12");
alert(son.song ()); //父親的原型物件函式
注意:將步驟一和步驟二的程式碼放入紅色標記部分。否認Son.prototype.long方法會被覆蓋掉。
由於Son.prototype =Father.prototype,子類的原型直接指向父類的原型,這樣會導致,修改子類原型物件的時候,也會修改父類原型物件。為了避免這個問題,我們可以使用第三種方式,找一箇中間建構函式,來作為介質。
3.
function extend(Son,Father){
varF = function(){}
fn.prototype = new Father()
Son.prototype =new F()
Child.prototype.constructor = Child;
}