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();
三、继承实例-拖拽