js面向对象继承

 前言

   最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录。

js的面向对象

   先说说我目前了解的js创建对象方法

  1.写一个函数,然后通过new创建对象

  2.字面量的方式

  如果想要复用的话,可能会用到工厂方法 

 工厂方法每次都要创建对象 并返回   

 构造方法创建对象方法可以更简洁

 然而构造方法用实现实例间共享共同的方法,比较麻烦

  原型可以实现实例共享所有属性

  每个函数都有指向原型对象的指针,如果将一个函数的原型属性赋值给另外函数的实例,函数的原型将指向另外一个函数的原型对象,这样就形成原形链。

  原型链可以是来模拟面向对象中的继承特性

  在用原型的过程中,如果实例间的引用类型的值是指向同一个引用,所有实例间引用类型的值可能相互影响。

  所以引入构成函数来生成一个副本对象 保证对象的独立性   他们的组合史称组合继承方式

  但是这种模式,需要调用父类构造函数2次,性能可能不是最佳   

  这个时候寄生继承方式出现了 他实现的方式是以object()方法创建对象引用的副本,然后再给副本的构造实例赋值以子类的对象,最后将子类的对象的原型赋值以副本对象,这样就避免调用了父类构造函数,只在子类构造函数里通过父类.call(this,args)调用父类

  最后寄生组合继承方式成了创建对象的比较完美的解决方案

原文地址:https://www.cnblogs.com/JaggerMan/p/4554500.html