码迷,mamicode.com
首页 > Web开发 > 详细

js 继承

时间:2014-12-13 17:46:42      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   java   on   div   

javascript有很多种继承方法,今天我简单的总结一下:

一、原型继承方式:
1    function parent(){};
2            parent.prototype.Pname=‘Parent‘;
3    function child(){}
4           child.prototype=new parent();                 //将子类的原型指向父类
5           child.prototype.Cname=‘child‘;

这样就实现了原型继承。将父类的对象作为子类的原型;

打开调试器:粘贴上面的代码。然后var c = new child(); console.log(c);我们可以看到输出: child {Cname: "child", Pname: "Parent"}

二、 组合继承:
 1   function parent2(sparam){
 2             this.param=sparam;
 3             this.getParam=function(){
 4                return this.param;
 5            }
 6    };
 7 
 8   function child2(cparam,cname){
 9                  parent2.call(this,cparam);                   //调用父类构造函数
10                  this.name=cname;
11    }
12   child2.prototype=new parent2(‘param‘);                //继承父类
13  child2.prototype.getName=function(){
14         return this.name;
15     }

用call和apply的方式将this指针传给父方法。

三、类继承不是很常见,一般都是组合着用。看下例:

1 function Super(){
2     this.colors=["red","blue"];
3 }
4  
5 function Sub(){
6     Super.call(this);
7 }

 

这就是类式继承,这个有一个缺点就是   方法在构造函数内创建,函数的复用就无从谈起了,而且还有一个问题,就是在超类原型中定义的方法对子类是不可见的。

 

还有就是子类会复制父类的属性,如下:

1 var a=new Sub();
2 a.colors.push("black");
3 console.log(a.colors);//----->   "red,blue,black"
4  
5 var b=new Sub();
6 console.log(b.colors);//----->   "red,blue"

 


三、属性复制:

遍历父类的属性,复制给子类。



js 继承

标签:style   blog   io   ar   color   sp   java   on   div   

原文地址:http://www.cnblogs.com/webARM/p/4161556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!