您好我有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函数,但它调用它自己的类的函数。
答案 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