原型继承
Posted panjingshuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型继承相关的知识,希望对你有一定的参考价值。
1.借用构造函数:只能继承父类的实例属性,但是可以给父类传递参数,在子类的构造函数中使用SuperType.call(this),将父类的构造函数的this指向改变,这样将父类中的属性变成了子类中的
2.组合继承:利用原型来实现原型属性的继承(即将实例的prototype的属性指向父类创建的实例),利用构造函数call方法来实现将实例属性的继承。但是问题是可能会遇到原型属性和实例属性相同的情况。
3.原型式继承:函数内部创建一个构造函数,并可以通过传入函数的参数,来实现构造函数原型的指向,最后返回构造函数实例,(Object.create(),但是所有的创建出来的对象都指向同一个原型,在给原型中的属性添加信息的时候,都会添加到同一个原型对象中。
4.寄生式继承:创建一个函数,在函数内部,使用原型继承返回的实例,给返回的实例添加一些实例属性。感觉上和原型继承差不多,只是将对实例属性的设置添加到了函数内部
5.寄生组合式继承:主要是为了解决二次调用父类的构造函数,直接将子类的原型指向父类的原型,改变一下原型的构造函数名,这样可以直接利用子类来创建实例实现父类原型的继承,然后利用call来实现父类的实例属性的继承,这样也就可以减少实力属性的重复继承。
以上是关于原型继承的主要内容,如果未能解决你的问题,请参考以下文章
JSJavaScript继承 - 原型链 - 盗用构造函数 - 组合继承 -原型式继承 - 寄生式继承 - 寄生式组合继承