`static`表示这个属性/方法属于这个类本身,而不会被实例所拥有,也就是说`Child.myMethod`调用的是`static`标识的`myMethod`,`new Child().myMethod`调用的是没有`static`的那个`myMethod`,如果`Child`只有`static myMethod`,那`new Child().myMethod`调用就会报错:  当然如果你继承`extends`了类,那就会沿着父类链条一直往上找,整个链条都没有就会报错,哪个环节有就调用哪个  这就是所谓原型链。 然后再讲`super`,`super`你可以理解为父级,具体指向谁取决于位于**类属性** 也就是有`static`标识还是**实例属性** ,在类属性中就指向父类,实例属性就指向父实例属性,简单讲就是`static`中的`super.xxx`访问的是父类中的`static xxx`,没有`static`的同理。 所以把你的例子转换一下就差不多是下面这样: class Parent { static myMethod(msg) { console.log('static', msg); } myMethod(msg) { console.log('instance', msg); } } class Child extends Parent { static myMethod(msg) { Parent.myMethod(msg); } myMethod(msg) { new Parent().myMethod(msg); } } Child.myMethod(1); // static 1 var child = new Child(); child.myMethod(2); // instance 2