原型和原型链

原型和原型链

 // 创建一个 Person 类
       class Person {
         // 构造器方法
         constructor(name, age) {
           // 构造器中的this 是谁? --- 类的实例对象(新new出来的那个实例)
           this.name = name
           this.age = age
        }
 
         // 一般方法
         // speak 方法放在那里了? ---类的原型对象上, 供实例使用
         // 通过 Person 实例调用 speak时, speak 中的this 就是 Person 实例
         speak() {
           console.log(this);
           console.log(`我叫${this.name}, 年龄${this.age}`);
        }
      }
       // 创建一个Person类的实例
       const p1 = new Person('tom', 18)
       console.log(p1);
       const p2 = new Person('jerry', 19)
       console.log(p2);
 
 
       // 创建一个Student类, 继承于 Person 类
       class Student extends Person {
         // 当一个类继承了另外一个类, 并且写了constructor 的时候, 必须有 super, 否则报错, super 帮你调用父类的构造器
         constructor(name, age, grade) {
           super(name, age)
           this.grade = grade
        }
         // 重写从父类继承过来的方法
         speak() {
           console.log(this);
           console.log(`我叫${this.name}, 年龄${this.age}, 我读${this.grade}年级`);
        }
      }
       const s1 = new Student('张三', 15, '高一')
       console.log(s1)
       console.log(s1.speak())

 

 

posted @ 2022-01-10 22:16  菁瓜  阅读(135)  评论(0)    收藏  举报