1.什么是继承
在原有对象的基础上,略作修改,得到一个新的对象
不影响原有对象的功能
子类不影响父类,子类可以继承父类的一些功能(代码复用)
2.如何添加继承
属性:call
方法:for in
一、属性的继承
//属性的继承:调用父类的构造函数,用call改变this指向
function CreatePerson(name,sex){//父类
this.name=name;
this.sex=sex;
}
CreatePerson.prototype.showName=function(){
alert(this.name);
}
var p1=new CreatePerson(‘小明‘,‘男‘);
p1.showName();
function CreateStar(name,sex,job){//子类
//继承父类
CreatePerson.call(this,name,sex);
// this.name=name;
// this.sex=sex;
this.job=job;
}
var p2=new CreateStar(‘黄晓明‘,‘男‘,‘演员‘);
二、方法的继承
//var a={
// name:‘小明‘
//};
//var b=a;
//b的name属性的修改影响了a的name属性,两者相互影响,解决办法用for in
//for(var attr in a){
// b[attr]=a[attr];
//}
//var b={};
//extend(b,a);
//b.name=‘小强‘;
//alert(a.name);
//封装函数
function extend(obj1,obj2){
for (var attr in obj2) {
obj1[attr]=obj2[attr];
}
}
function CreatePerson(name,sex){//父类
this.name=name;
this.sex=sex;
}
CreatePerson.prototype.showName=function(){
alert(this.name);
}
var p1=new CreatePerson(‘小明‘,‘男‘);
p1.showName();
function CreateStar(name,sex,job){//子类
//继承父类
CreatePerson.call(this,name,sex);
// this.name=name;
// this.sex=sex;
this.job=job;
}
//方法继承:for in 拷贝继承(jquery也是采用拷贝继承)
extend(CreateStar.prototype,CreatePerson.prototype);
var p2=new CreateStar(‘黄晓明‘,‘男‘,‘演员‘);
p2.showName();
三、继承实例-拖拽