gpt4 book ai didi

javascript - 如何调用基类方法而不是扩展类方法

转载 作者:行者123 更新时间:2023-12-02 15:38:08 25 4
gpt4 key购买 nike

在下面的例子中,如何直接从Base.bar()调用Base.foo(),我明白为什么它调用Test.foo () 首先,但是有什么办法可以防止这种情况发生。

class Base {
constructor() {
console.log('Base constructor')
}

foo() {
console.log('Base foo')
}

bar() {
console.log('Base bar')

this.foo();
}
}

class Test extends Base {
foo() {
console.log('Test foo');

super.foo();
}
bar() {
console.log('Test bar');

super.bar();
}
}

const test = new Test();
test.bar();

输出为:

Base constructor
Test bar
Base bar
Test foo
Base foo

我的预期输出是:

Base constructor
Test bar
Base bar
Base foo

最佳答案

您可以在使用 ES2015 类时使用标准 JavaScript 功能。在这种情况下,只需使用 Function.prototype.call():

'use strict'
class Base {
constructor() {
console.log('Base constructor')
}

foo() {
console.log('Base foo')
}

bar() {
console.log('Base bar')

Base.prototype.foo.call(this);
}
}

class Test extends Base {
foo() {
console.log('Test foo');

super.foo();
}
bar() {
console.log('Test bar');

super.bar();
}
}

const test = new Test();
test.bar();

关于javascript - 如何调用基类方法而不是扩展类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32775693/

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