小题一道
今天的题目灵感来自于阮一峰老师的ECMAScript 6 入门
class Parent {
static _test = 123; //父类的(静态)属性
_test = 456;// 父类实例对象的属性
//父类的(静态)方法
static myMethod(msg) {
console.log("static", msg);
}
//父类原型对象上的方法
myMethod(msg) {
console.log("instance", msg);
}
}
class Child extends Parent {
static myMethod(msg) {
console.log(super._test);
super.myMethod(msg);
}
myMethod(msg) {
console.log(super._test);
super.myMethod(msg);
}
}
Child.myMethod(1); // 123 static 1
const child = new Child();
child.myMethod(2); // undefined instance 2
super
在静态方法之中指向父类,在普通方法之中指向父类的原型对象。
Child
类普通方法中的super
指的是父类Parent
的原型对象, 而_test = 456
是Parent
的实例对象的属性。
试着在代码中加上Parent.prototype._test = 666;
再次调用child.myMethod(2);