【发布时间】:2018-01-27 03:21:22
【问题描述】:
我正在尝试从父类cars 访问静态方法baseArea,但它显示以下错误:
test.php:34 Uncaught TypeError: (intermediate value).baseArea is not a function
at Bike.get bikeArea [as bikeArea] (test.php:34)
at test.php:42
但是当我使用 baseArea () {} 而不是 static baseArea() {} 时它工作正常
我做错了什么?
class Cars {
constructor(x, y) {
this.height = x;
this.width = y;
}
static baseArea() {
return 44;
}
}
class Bike extends Cars {
constructor(flag) {
super(flag, flag);
}
get bikeArea() {
return super.baseArea();
}
}
let bike = new Bike(10);
console.log(bike.bikeArea);
【问题讨论】:
-
通常不会在对象上调用的静态函数。你在课堂上给他们打电话。
-
super.baseArea()应该是Cars.baseArea()。 -
或
Bike.baseArea() -
请参见 Super class calls with super 下的示例developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 他们还使用
super调用静态方法@ 是如何工作的? -
这可能是因为
pingpong方法也是静态的并且使用Computer.pingpong()而不是new Computer().pingpong()调用整个链是静态的。也许在那种情况下它成功解决了超级。
标签: javascript class ecmascript-6