// es5的继承 function Animal(name,color){ this.name = name; this.color = color; } Animal.prototype.eat = function(){ console.log(this.name + ' is eating'); } Animal.prototype.sleep = function(){ console.log(this.name + ' is sleeping'); } //继承 function Rabbit(name,color,age){ //调用父类构造 Animal.call(this,arguments); this.age = age; } function foo(){} foo.prototype = Animal.prototype; Rabbit.prototype = new foo(); Rabbit.prototype.constructor = Rabbit; let rabbit = new Rabbit('大白','white',10); rabbit.eat(); rabbit.sleep(); console.log(rabbit); //es6 class Animal{ constructor(name,color){ this.name = name; this.color = color; } eat(){ console.log(this.name + ' is eating'); } sleep(){ console.log(this.name + ' is slepping'); } } class Rabbit extend Animal{ constructor(name,color,age){ //子类中通过super调用父类的构造函数,一定要放在第一行 super(name,color); this.age = age; } eat(){ console.log('我是自己的eat');//这里自已如果有就覆盖父亲的 } test(){ super.eat(); } } let rab = new Rabbit('大白','white',10); rab.eat(); rab.sleep(); rab.test(); console.log(rab)