Наследование закрытия Javascript: возможно ли иметь функции с одинаковыми именами в базовом и производном объектах? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть простое наследование на основе замыканий:

function BaseObject(a) {
    this.a = a;

    this.MyFunction = function() {
        // ...
    }
}

function DerivedObject(a, b) {
    BaseObject.call(this, a)
    this.b = b;

    this.MyFunction = function() {
        // ...
    }
}

var instance = new DerivedObject(someValue, someOtherValue);
instance.MyFunction();

Это вызовет версию MyFunction, определенную в DerivedObject.Есть ли способ настроить базовые / производные объекты, чтобы я мог решить, какой из них вызывать?

1 Ответ

0 голосов
/ 07 июня 2018

Если вы хотите иметь возможность вызывать BaseObject MyFunction со своих DerivedObject с, просто сохраните ссылку на функцию, прежде чем перезаписать ее своей собственной:

function DerivedObject(a, b) {
    BaseObject.call(this, a)
    this.b = b;

    const baseMyFunction = this.myFunction;
    this.myFunction = function() {
        // call parent
        const res = baseMyFunction.call(this);
        // …
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...