//父类
function Parent(){this.type='Parent';
}Parent.prototype.play=function(){consloe.log('1111');
}
//子类
function Child(name){this.name=name;this.age=18;
}
一、原型链继承,会共用父类的属性
Child.prototype=new Parent();
Child.prototype.constructor=Child;
二、构造函数继承,不能继承原型链上的方法
function Child(name){Parent.call(this);//调用父级构造函数this.name=name;this.age=18;
}
三、组合继承,前面两种组合,但是会调用两次构造函数
四、寄生组合继承,面两种组合,不会调用两次构造函数(推荐)
//Object.create 复制一个对象,但是不会调用构造函数
Child.prototype=Object.create(Parent.prototype);
五、ES6 class语法、
Class Parent{constructor(){this.type='Parent';}play(){consloe.log('11111');}
}
class Child extends Parent{constructor(name){super();//调用父类构造函数this.name=name;this.age=18;}
}