原理:

ES6的class继承关键子、核心也是利用了寄生式组合继承的方式

代码理解

  1. class User{
  2. constructor(name){
  3. this.name = name;
  4. }
  5. getName(){
  6. console.log(this.name)
  7. }
  8. }
  9. class CreateUser extends User{
  10. constructor(name, age){
  11. super(name)
  12. this.age = age
  13. }
  14. getAge(){
  15. console.log(this.age)
  16. }
  17. }
  18. let users = new CreateUser('gf', 18);
  19. users.getName() // gf

extends实现原理

  1. function _extends(subType, superType){
  2. subType.prototype = Object.create(superType && superType.prototype, {
  3. constructor: {
  4. value: subType,
  5. enumerable: false,
  6. writable: true,
  7. configurable: true
  8. }
  9. });
  10. if(subType){
  11. Object.setPrototypeOf
  12. ? Object.setPrototypeOf(subType, superType)
  13. : subType.__proto__ = superType;
  14. }
  15. }
  16. function User(name) {
  17. this.name = name;
  18. }
  19. User.prototype.getName = function () { console.log(this.name) };
  20. function CreateUser(name, age) {
  21. this.age = age;
  22. User.call(this, name);
  23. Hobby.call(this);
  24. }
  25. _extends(CreateUser, User);
  26. let users = new Create('lisi',18)
  27. // 这里有问题,今天先这样吧、明天研究这个