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

js继承

时间:2016-05-20 13:22:46      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

继承,通过原型链实现

 1 function Box(){          //被继承的函数叫做超类型 父类基类
 2       this.name = "Lee";
 3 }
 4 function Dest(){            //继承的函数叫做子类型 子类派生类
 5       this.age = 100;
 6 }
 7 function Table(){
 8       this.level = "AAA";
 9 }
10 //通过原型链继承,超类型实例化后的对象实例,赋值给子类型的原型属性
11 //new Box()会将Box构造里的信息和原型里的信息都交给Dest
12 //Desk的原型,得到的是Box的构造+原型里的信息
13 Dest.prototype = new Box()
14 Table.prototype = new Desk()
15 
16 var dest = new Desk();
17 alert(desk.age)
18 alert(desk.name)
19 
20 var table = new Table();
21 alert(desk.age)
22 alert(desk.name)
23 alert(table.level)

就近原则,实例里有就返回,没有就去查找原型。

子类型从属于自己或者他的超类型

 

使用对象冒充继承

 1 function Box(name,age){
 2     this.name = name;
 3     this.age = age;
 4     this.family=["哥哥“,”姐姐“,”妹妹“]    //引用类型放在构造里就不会被共享
 5 }
 6 //构造函数里的方法,放在构造里,每次实例化都会分配一个内存地址,所以最好放在原型里,保证多次实例化只有一次地址。
 7 Box.prototype.run = function(){
 8    return this.name + this.age+“运行中”
 9 }
10 
11 //Box.prototype.family="家庭"
12 
13 function Desk(name,age){
14    Box.call(this,name,age)       //对象冒充,只能继承构造里的信息
15 }
16 Desk.prototype = new Box()   //原型链继承
17 
18 var desk = new Desk("Lee",100);
19 alert(desk.name)
20 alert(desk.family)
21 desk.family.push("弟弟")
22 
23 var desk2 = new Desk("Lee",100)
24 alert(desk2.family)

 

js继承

标签:

原文地址:http://www.cnblogs.com/bhan/p/5511655.html

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