美文网首页
17.ES6继承

17.ES6继承

作者: Fl_来看看 | 来源:发表于2019-06-06 16:42 被阅读0次

    ES6之前的继承

    1. 在子类中通过call/apply方法借助父类的构造函数
    2. 将子类的原型对象设置为父类的实例对象
            function Person(myName, myAge) {
                this.name = myName;
                this.age = myAge;
            }
            Person.prototype.say =  function () {
                console.log(this.name, this.age);
            }
            function Student(myName, myAge, myScore) {
                // 1.在子类中通过call/apply方法借助父类的构造函数
                Person.call(this, myName, myAge);
                this.score = myScore;
                this.study = function () {
                    console.log("day day up");
                }
            }
            // 2.将子类的原型对象设置为父类的实例对象
            Student.prototype = new Person();
            Student.prototype.constructor = Student;
    
            let stu = new Student("zs", 18, 99);
            stu.say();
    

    ES6开始的继承:用extends和super

            1.在ES6中如何继承
            1.1在子类后面添加extends并指定父类的名称
         1.2在子类的constructor构造函数中通过super方法借助父类的构造函数
    
       class Person{
                constructor(myName, myAge){
                    // this = stu;
                    this.name = myName; // stu.name = myName;
                    this.age = myAge; // stu.age = myAge;
                }
               say(){
                   console.log(this.name, this.age);
               }
            }       
    // 以下代码的含义: 告诉浏览器将来Student这个类需要继承于Person这个类
            class Student extends Person{
                constructor(myName, myAge, myScore){
                    // 1.在子类中通过call/apply方法借助父类的构造函数
                    // Person.call(this, myName, myAge);
                    super(myName, myAge);
                    this.score = myScore;
                }
                study(){
                    console.log("day day up");
                }
            }
            let stu = new Student("zs", 18, 98);
            stu.say();
    
    1. 在子类中通过call/apply方法借助父类的构造函数
      Person.call(this, myName, myAge);
    2. super(myName, myAge);这两句话等效的,或许Super是语法糖?
    3. super 调用父类的构造函数

    相关文章

      网友评论

          本文标题:17.ES6继承

          本文链接:https://www.haomeiwen.com/subject/kxeuxctx.html