class Person { constructor(name, age) { this.name = name this.age = age } test() { } }class Student extends Person { constructor(name, age, no) { super(name, age) this.no = no } say() { console.log(`name: ${this.name}, age: ${this.age}, no: ${this.no}`) } }let student = new Student('mrcode', 21, '11403080435') student.say()
student可以访问test方法,这点可以理解。 但是为什么通过Student中的this可以访问到父类中的name, age呢? ES6中的class只是原型链的语法糖。 原型链上的对象都是原型。 哪里来的name, age属性呢?
JS のサブクラスのインスタンス プロパティが親クラスのインスタンス プロパティにアクセスできるのはなぜですか? - PHP 中国語 Web サイト Q&A - JS のサブクラスのインスタンス属性が親クラスのインスタンス属性にアクセスできるのはなぜですか? -PHP中国語サイトQ&A
ぜひ見て学んでください。
(super(name,age))相当于原始寄生组合继承中的 Person.call(this,name,age)