先上例子: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);//輸出結果是 動物