原理:

利用寄生式+构造函数实现多个继承

代码理解

  1. function User(name) {
  2. this.name = name;
  3. }
  4. User.prototype.getName = function () { console.log(this.name) };
  5. function Hobby() {
  6. this.hobby = ['小姐姐', '70岁富婆']
  7. }
  8. Hobby.prototype.getHobby = function () { console.log(this.hobby) }
  9. function CreateUser(name, age) {
  10. this.age = age;
  11. User.call(this, name);
  12. Hobby.call(this);
  13. }
  14. CreateUser.prototype = Object.create(User.prototype);
  15. Object.assign(CreateUser.prototype, Hobby.prototype);
  16. CreateUser.constructor = CreateUser;
  17. let users = new CreateUser('gf', 18);
  18. console.log(users)
  19. users.hobby.push('美女');
  20. let users1 = new CreateUser('lisi', 12);
  21. users.getHobby() // ['小姐姐', '70岁富婆', '美女']