1. // ES5 一个函数就是一个类
    2. // ES6 如何创建类 借鉴后端语音
    3. // class Super {
    4. // constructor(name, age) {
    5. // this.name = name
    6. // this.age = age
    7. // }
    8. // // 原型方法
    9. // say() {
    10. // console.log('say')
    11. // }
    12. // }
    13. // const sup = new Super('wenli', 18)
    14. // console.log(sup)
    15. // "use strict";
    16. // function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); } else { return left instanceof right; } }
    17. // function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
    18. // var Super = function Super(name, age) {
    19. // _classCallCheck(this, Super);
    20. // this.name = name;
    21. // this.age = age;
    22. // };
    23. // var sup = new Super('wenli', 18);
    24. // console.log(sup);
    25. // ES6类继承:寄生组合式继承
    26. class Super {
    27. constructor(name, age) {
    28. this.name = name;
    29. this.age = age;
    30. }
    31. // 原型方法
    32. say() {
    33. console.log("say");
    34. }
    35. }
    36. // 创建一个子类Sub 继承 Super
    37. class Sub extends Super {
    38. constructor(name, age) {
    39. // 继承时,使用this之前 必须先调用super父类
    40. // super代表父类的构造函数
    41. Super.call(this, name, age)
    42. super(name, age); // 借用构造函数继承 Super.call(this, name, age)
    43. }
    44. }
    45. let sub1 = new Sub('wenli', 15);
    46. console.log(sub1);
    47. let sub2 = new Sub('张华', 5);
    48. console.log(sub2);