您的位置:首页 > Web前端 > JavaScript

JS封装继承函数

2017-04-08 18:12 363 查看
1 function extend(child,parent){
2     var F=function(){}
3     F.prototype=parent.prototype;
4     child.prototype=new F();
5     child.prototype=child;
6     child.uber=parent.prototype; //uber指向父对象的原型。方便子对象调用父对象原型中的重写的方法。
7 }
8 function Shape(){}
9 Shape.prototype.name="Shape";
10 Shape.prototype.color="blue";
11
12 function circle(radius){
13     this.radius=radius;
14 }
15
16 circle.prototype.name="circle";
17 circle.prototype.getS=function(){
18     return this.radius*this.radius*3.14;
19 }
20 extend(circle,Shape);
21
22 var cir=new circle(2);
23 alert(cir.name);   //"circle"
24 alert(cir.color);    //"blue"
25 alert(cir.uber.name);    //"Shape"
26 alert(cir.getS()) //"12.56"


 extend函数的第一个参数是子构造器,第二个参数是父构造器;

为什么子构造器的原型对象不直接指向父构造器的原型对象,是因为若child.prototype=parent.prototype,则会出现父子的原型对象绑定在一起,即父子的原型对象的引用相等,相当于指向同一个地址,改变子对象的原型,父对象的原型也会随之改变, 若遍历父对象的原型和子对象的原型,发现两个完全相同个。

 

 

1 var cir=new circle(2);
2 var shape1=new Shape();
3 cir.prototype.name="this is circle";
4
5
6 for(var i in shape1){
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: