小编典典

如何在javascript中从子类调用父方法?

all

在过去的几个小时里,我一直在试图找到解决问题的方法,但这似乎是无望的。

基本上我需要知道如何从子类调用父方法。到目前为止,我尝试过的所有东西都以无法正常工作或覆盖父方法而告终。

我正在使用以下代码在 javascript 中设置 OOP:

// SET UP OOP
// surrogate constructor (empty function)
function surrogateCtor() {}

function extend(base, sub) {
    // copy the prototype from the base to setup inheritance
    surrogateCtor.prototype = base.prototype;
    sub.prototype = new surrogateCtor();
    sub.prototype.constructor = sub;
}

// parent class
function ParentObject(name) {
    this.name = name;
}
// parent's methods
ParentObject.prototype = {
    myMethod: function(arg) {
        this.name = arg;
    }
}

// child
function ChildObject(name) {
    // call the parent's constructor
    ParentObject.call(this, name);
    this.myMethod = function(arg) {
        // HOW DO I CALL THE PARENT METHOD HERE?
        // do stuff
    }
}

// setup the prototype chain
extend(ParentObject, ChildObject);

我需要先调用父类的方法,然后在子类中添加一些东西。

在大多数 OOP 语言中,这就像调用一样简单,parent.myMethod() 但我真的无法理解它是如何在 javascript 中完成的。

非常感谢任何帮助,谢谢!


阅读 107

收藏
2022-06-20

共1个答案

小编典典

这是它的完成方式:ParentClass.prototype.myMethod();

或者如果你想在当前实例的上下文中调用它,你可以这样做: ParentClass.prototype.myMethod.call(this)

从带有参数的子类调用父方法也是如此: ParentClass.prototype.myMethod.call(this, arg1, arg2, ..)* 提示:使用apply()而不是call()将参数作为数组传递。

2022-06-20