關於對象繼承的問題——利用空對象作中介

先上例子:javascript

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);java

修改後的代碼(感興趣打開鏈接---工程師的福利導航):函數

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);//輸出結果是   動物
相關文章
相關標籤/搜索