先上例子:
function Animal(){
this.type=`動物`;
}
function Cat(name, color){
this.name=name;
this.color=color;
}
//定義繼承函式
function extend(Child, Parent){
var Fn=function(){};
Fn.prototype=Parent.prototype;
Child.prototype=new Fn();
Child.prototype.constructor=Child;
Child.uber=Parent.prototype;//這裡的uber是個名稱,可以隨意命名
}
//執行函式
extend(Cat, Animal);
var cat_1=new Cat(`kate`, `white`);
alert(cat_1.type);//輸出結果是undefined
針對這個問題,在extend方法中uber要在Cat中進行體現
對Cat函式新增
Cat.uber.constructor.call(this);
function Animal(){
this.type=`動物`;
}
function Cat(name, color){
Cat.uber.constructor.call(this); //新增程式碼
this.name=name;
this.color=color;
}
//定義繼承函式
function extend(Child, Parent){
var Fn=function(){};
Fn.prototype=Parent.prototype;
Child.prototype=new Fn();
Child.prototype.constructor=Child;
Child.uber=Parent.prototype;//這裡的uber是個名稱,可以隨意命名
}
//執行函式
extend(Cat, Animal);
var cat_1=new Cat(`kate`, `white`);
alert(cat_1.type);//輸出結果是 動物