gpt4 book ai didi

javascript - JavaScript 中的原型(prototype)继承...我可以调用 "super"等价物吗?

转载 作者:行者123 更新时间:2023-12-04 01:58:47 24 4
gpt4 key购买 nike

我正在使用原型(prototype)继承在 javascript 中构建一个面向对象的库。与 Java 和 .NET 类似,我的所有对象/原型(prototype)都将继承“Object”对象/原型(prototype)。我想知道是否可以从派生的调用 super 对象/原型(prototype)函数?

考虑以下代码示例:

function Object() {
this.DoAction = function() {
};
};

function CustomObject() {
this.DoAction = function() {
super.DoAction(); //How do I do this in JavaScript?
};
};

最佳答案

JavaScript 没有 super 的直接等价物。

解决方法可能是在覆盖原型(prototype)之前将方法保存在原型(prototype)上,例如:

function CustomObject() {
this._super_DoAction = this.DoAction;
this.DoAction = function() {
this._super_DoAction();
};
};

如果你会使用ES5特性,你可以使用Object.getPrototypeOf从原型(prototype)中获取方法,然后apply用当前对象执行作为这个:

function CustomObject(){
this.DoAction=function() {
Object.getPrototypeOf(this).DoAction.apply(this, []);
};
}

关于javascript - JavaScript 中的原型(prototype)继承...我可以调用 "super"等价物吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977718/

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