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继承的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

js代码片段: utils/lcoalStorage/cookie

JS代码片段:一个日期离现在多久了

js常用代码片段(更新中)

js常用代码片段

Chrome-Devtools代码片段中的多个JS库