看了很多写继承的,自己觉得还是有必要记录下。
function Parent(name,age){ this.age=age; this.name=name; } Parent.prototype.type=function(){ console.log('tihs is Parent prototype') } function Child(){ this.type="child" } 借用原型链继承 Child.prototype = new Prent(); 解决: 可以继承父类的所有方法和属性。 缺点: 来自原型对象的所有属性被共享。无法传入参数 借用构造函数实现 function Child(){ Parent.call(this) } 解决: 子类实例共享父类自有属性。可以传参。 缺点: 不能继承父类原型里的方法。 组合继承1 function Child(){ Paren.call(this); } Child.propertype =new Parent() //组合1.1 Child.propertype =Parent.propertoty //组合1.2 解决: 可以继承到父类原型的方法。 问题: 调用两次父类构造函数(1.1)child parent公用原型。 组合继承2经典 function Child(){ Parent.call(this); } function CreateExtends(parent,child){ function empty(){}; empty.propotype = parent.propotype; child.prototype = new empty() } Class extends class Parent(){ constructor(name,age){ this.name=name; this.age=age } showParent(){ console.log('this is parent') } } class Child extends Paren{ constructor(name,age){ supper(name,age); this.type="child" } showType(){ console.log(this.type) } }