gpt4 book ai didi

javascript - 无法在 JavaScript 父类中调用静态方法

转载 作者:搜寻专家 更新时间:2023-11-01 05:09:26 24 4
gpt4 key购买 nike

我试图从父类 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. 正在引用一个类实例。静态方法不附加到实例,而是附加到类本身。

但是,以下内容将起作用:

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 Bike.baseArea();
}
}

注意 Bike.baseArea()(为了便于阅读,可以这样调用它:Cars.baseArea())。

在您链接的示例中 here ,它很可能有效,因为 pingpong 方法也是静态的,并且使用 Computer.pingpong() 而不是 new Computer().pingpong() 调用整个链是静态的。也许在那种情况下它成功解决了 super 问题。

关于javascript - 无法在 JavaScript 父类中调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45756642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com