在Javascript中从父类调用Childs函数

时间:2018-05-13 04:04:54

标签: javascript javascript-objects

您好我有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 :(得分:1)

您没有在基类的构造函数中调用 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()

答案 1 :(得分:0)

我认为您正在询问如何从子类中调用父类的方法。

如果是,如果子类同名,则使用子类中的super.parentClassMethodName()

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super