先上例子:
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);//输出结果是 动物