gpt4 book ai didi

javascript - JavaScript 在不知道特定父级的情况下调用父级中的重写函数是否有一个好的模式?

转载 作者:数据小太阳 更新时间:2023-10-29 03:55:16 25 4
gpt4 key购买 nike

基本上我想要可继承的函数,如

Base = function() { };

Base.prototype.foo = function() {
console.log("base foo");
};

Derived = function() { };

somelib.inherit(Derived, Base);

Derived.prototype.foo = function() {
console.log("derived foo");
}

d = new Derived():
d.foo();

我要打印

derived foo
base foo

是的,我知道我可以显式调用 Base.prototype.foo.call(this);我只是想知道是否有一种模式可以自动调用重写的父类(super class)函数。我要解决的问题是 2 倍。

  1. 派生类不必记住调用父类的方法,它会自动发生。
  2. 如果 1. 不可能发生,那么至少我希望 Derived 不要按名称调用 Base,因为这很脆弱。相反,我希望它调用父类或其他东西,这样你就不必知道基础了。这样,如果您更改基类的名称,就不必去修复每个派生类。

最佳答案

您可以使用如下结构来实现此类功能:

function Base(){}
Base.prototype.destroy = function(){console.log('Base destroy');};

function Derived(){}
Derived.prototype = new Base; // Let Derived inherit from Base

// Override the `destroy` method
Derived.prototype.destroy = function() {
console.log('Derived destroy');

// Call parent class method
this.constructor.prototype.destroy();
// If the context of the method is important, you can use Function.call:
//this.constructor.prototype.destroy.call(this);
};


// Create an instance of Derived, and call the destroy method:
(new Derived).destroy();

关于javascript - JavaScript 在不知道特定父级的情况下调用父级中的重写函数是否有一个好的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7189437/

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