js中的继承在es5中有很多种方式,让人眼花缭乱。那么今天我们就来统一一下,找到一个相对来说,最理想的方案(寄生组合式)来解决这个问题吧:
function Father (name) {
this.name = name;
}
Father.prototype.sayName = function () {
console.log(this.name);
}
function Child (name, age) {
Father.call(this, name);
this.age = age;
}
Child.prototype = Object.create(Father.prototype);
Child.prototype.constructor = Child;
Child.prototype.sayAge = function () {
console.log(this.age);
}
es6已经解决了这个问题,采用babel转码后的工程即可支持如下的es6写法:
class Father {
constructor (name) {
this.name = name
}
sayName () {
console.log(this.name);
}
}
class Child extends Father {
constructor (name, age) {
super(name);
this.age = age;
}
sayAge () {
console.log(this.age);
}
}
ok,喜欢的同学可以收藏一下了。