首页 > 代码库 > 继承的几种方式

继承的几种方式

一.拷贝继承:通用型的 有new或没有new的时候都可以

  拷贝继承:

  属性通过 父构造器.call(this)来继承属性。

  方法通过 for in 来讲一个父prototype的属性传递给子prototype如下图

  技术分享

 

2原型继承:适合无new的对象

  技术分享

 

 Var a={

Name:’xiaoming’

}

Var b=cloneObj(a);

Alert(b.name);

Function cloneObj(obj){

Var F=function(){};

F.prototype=obj;

Return new F();

}

3 类式继承

技术分享

 

Function Aaa(){

This.name=[1,2]

}

Aaa.prototype.showname=function(){

Alert(d)

}

Function Bbb() {

Aaa.call(this);    //Aaa中的this转化成谁调用Bbb 就指向谁

}

//重点来了,如果不写第二步的话,b1的构造器会是Aaa()

Var F=function(){};

F.prototype=Aaa.prototype

Bbb.prototype=new F();  //让属性跟方法分开传,不然可观察下图1 对象b1修改了name后,新对象b2访问到的name就是修改后的name。属性继承如上

Bbb.prototype.contructor=Bbb;

 

Var b1=new Bbb()

b1.showname()

首先 b1里面没有此方法,到Bbb.prototype,又没有。又因为Bbb.prototype=new Aaa();

所以到new Aaa()里面找,又没有 跑到Aaa()的Aaa.prototype里找到了

继承的几种方式