1. 程式人生 > 其它 >Javascript面向物件:建構函式的繼承

Javascript面向物件:建構函式的繼承

建構函式的繼承

現在有一個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; } /**{原型繼承部分程式碼位置}**/
Son.prototype.long=function(){ console.log(‘兒子的原型物件函式’) }

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;

}