个人理解的js继承,欢迎批评指正

6中原型链继承方式

1 原型链继承

    原型链继承是让子类的原型prototype属性指向父类的新实例,实现的本质是重写原型对象,子类拥有父类的方法,所有实例共享原型上的变量和方法,如果有重写,则会反映到所有实例上

2 构造函数

    在子类函数中调用父类函数(SuperType.call(this)),1 每个子类拥有父类中属性方法的副本,解决了上面的问题,2 方法在子类中定义,无法很好地实现复用 3, 可以传递参数

3 原型链+构造函数

    首先在子类中调用父类的方法,再让子类的原型指向父类的一个新实例,并让子类原型上的构造函数指向父类

4 原型式继承

    在函数中,首先传入要继承的对象,然后创建一个构造函数,让构造函数的prototype属性指向传入对象,,然后新建一个构造函数并返回。然后使用这个这个函数来创建新对象实例,这些实例的__proto__指向person对象

5 寄生式继承~~~~

    寄生式继承就是把原型式继承再次封装,然后在对象上扩展新的方法,再把新对象返回,采用Object.create(原型对象),再在新实例上添加方法,最会返回创建的新对象

6 寄生组合式继承

    在子类方法中调用父类,并添加自己的私有属性,第二步继承,创建一个新实例,并让新实例的原型指向父类的原型,让子类的原型指向这个实例,3 修复Constructor,子类原型上的Constructor指回子类自身(subType) 4
阅读 94

推荐阅读