属性和方法分开继承:
1、属性的继承:调用父类的构造函数.call。
2、方法的继承:for in,拷贝继承(jquery也是采用拷贝继承extend);
function Person(name,sex){ //父类
this.name = name;
this.sex = sex;
}
Person.prototype.showName = function(){
alert(this.name);
}
var p1 = new Person('小强','男');
function Star(name,sex,job){
Person.call(this,name,sex);
this.job = job;
}
//Start.prototype = Person.prototype;//问题所在:出现对象引用,换成下面一个函数调用。给子类增加的原型方法会增加到父类上。
extend(Start,Person); //完美
Start.prototype.showJob = function(){
};
var p2 = new Strat('小明明','男','学生');
p2.showName();
function extend(obj1,obj2){ //完美
for(var attr in obj2){ //完美
obj1[attr] = obj2[attr]; //完美
}
}