原理:
ES6的class继承关键子、核心也是利用了寄生式组合继承的方式
代码理解
class User{
constructor(name){
this.name = name;
}
getName(){
console.log(this.name)
}
}
class CreateUser extends User{
constructor(name, age){
super(name)
this.age = age
}
getAge(){
console.log(this.age)
}
}
let users = new CreateUser('gf', 18);
users.getName() // gf
extends实现原理
function _extends(subType, superType){
subType.prototype = Object.create(superType && superType.prototype, {
constructor: {
value: subType,
enumerable: false,
writable: true,
configurable: true
}
});
if(subType){
Object.setPrototypeOf
? Object.setPrototypeOf(subType, superType)
: subType.__proto__ = superType;
}
}
function User(name) {
this.name = name;
}
User.prototype.getName = function () { console.log(this.name) };
function CreateUser(name, age) {
this.age = age;
User.call(this, name);
Hobby.call(this);
}
_extends(CreateUser, User);
let users = new Create('lisi',18)
// 这里有问题,今天先这样吧、明天研究这个