原理:
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)// 这里有问题,今天先这样吧、明天研究这个
