Вызов функции Childs из класса родителей в Javascript - PullRequest
0 голосов
/ 13 мая 2018

Привет, у меня есть 2 класса JS, как показано ниже

class WPOnion_Field_API2 {
    constructor() {
        wp.hooks.addAction( 'wponion_reload_fields', this.init_fields );
    }

    js_settings(elem, _default) {
        return wponion.field_js_args( elem, _default );
    }

    is_valid() {
        return ( 1 >= this.elem );
    }

    init_fields() {
        console.log( 11111 );
    }
}

Расширенный класс

class WPOnion_Field_inputmas extends WPOnion_Field_API2 {
    constructor() {
        super();
    }

    init_fileds() {
        console.log( 1 );
    }
}

let WPOFInputMask = new WPOnion_Field_inputmas();

В первом классе, который вы видите, я использовал this.init_fields это означает, что класс, с которым он расширен, должен вызывать функцию childs, но при этом вызывать функцию своего собственного класса.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Я думаю, вы спрашиваете, как вызвать метод родительского класса из дочернего класса.

Если да, используйте super.parentClassMethodName() из дочернего класса, если дочерний класс также имеет то же имя.

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super

0 голосов
/ 13 мая 2018

Вы не вызвали this.init_fields в конструкторе базового класса.Вы только ссылались на него:

wp.hooks.addAction( 'wponion_reload_fields', this.init_fields );

На вызов этого, вам нужно добавить круглые скобки:

wp.hooks.addAction( 'wponion_reload_fields', this.init_fields() );

Но, поскольку он ничего не возвращает, онбыло бы неправильно передавать результат в качестве аргумента wp.hooks.addAction.

И в базовом классе метод вызывается: init_fields(), но в расширенном классе он называется init_fileds().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...