js继承
Posted -小白白白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js继承相关的知识,希望对你有一定的参考价值。
继承,通过原型链实现
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继承的主要内容,如果未能解决你的问题,请参考以下文章