1. ホーム
  2. javascript

[解決済み] javascriptで子クラスから親メソッドを呼び出すには?

2022-04-12 22:14:51

質問

この数時間、私の問題の解決策を探そうとしていますが、どうやら絶望的なようです。

基本的には、子クラスから親メソッドを呼び出す方法を知る必要があります。 私がこれまで試したすべてのものは、動作しないか、親メソッドを上書きすることで終わります。

私は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でどのように行われるのか、本当に把握できていません。

どんな助けでも大歓迎です、ありがとうございます

解決方法は?

その方法は次のとおりです。 ParentClass.prototype.myMethod();

また、現在のインスタンスのコンテキストで呼び出したい場合は、次のようにします。 ParentClass.prototype.myMethod.call(this)

子クラスから引数付きで親メソッドを呼び出す場合も同様です。 ParentClass.prototype.myMethod.call(this, arg1, arg2, ..) * ヒント apply() の代わりに call() を使えば、引数を配列で渡すことができます。