不要在ES6类中两次调用继承的方法

达米安

我正在从RequireJS转到browserify(与babelify一起),并尝试将当前模块重写为类。对于我的每个RequireJS模块,我都有一个名为的方法eventHandler来处理所有模块特定的事件。现在,当我扩展一个类时,父类将调用子类的eventHandler方法,这将导致两次调用该方法。

家长班:

'use strict';

class Tooltip {
    constructor() {
        this.eventHandler();
    }

    eventHandler() {
        // Module specific events
    }
}

module.exports = Tooltip;

子类:

'use strict';

import Tooltip  from './Tooltip';

class Block extends Tooltip {
    constructor() {
        super();
        this.eventHandler();
    }

    eventHandler() {
        // Module specific events
        // Gets called twice
    }
}

module.exports = Block;

我喜欢在所有模块中将eventHandler方法命名为相同的事实,因为它易于维护。这就是为什么我想保持这种模式的原因。那么解决这个问题的最佳方法是什么?感谢您的任何建议!

TJ人群

因为您知道父构造函数调用this.eventHandler,所以不要在派生类中这样做:

'use strict';

import Tooltip  from './Tooltip';

class Block extends Tooltip {
    constructor() {
        super();
        // (No call here)
    }

    eventHandler() {
        // Module specific events
        // Gets called twice
    }
}

module.exports = Block;

发表您的评论:

父类并不总是实现eventHandler方法。因此,在这种情况下,我还需要确保它也被调用。

他们在哪里,不打电话。如果他们不这样做,请拨打电话。子类在本质上与超类紧密相关。

如果您可以假设(!)eventHandler在super中的存在意味着它已经从其构造函数中调用了它,则可以执行以下操作:

constructor() {
    super();
    if (!super.eventHandler) {
        this.eventHandler();
    }
}

...但是同样,上级/下级关系的性质是,它之间的联系非常紧密,因此依靠您对上级是否执行此操作的了解是合理的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在DatePicker中调用两次的方法

来自分类Dev

是否可以在ES6继承的类中调用超级设置程序?

来自分类Dev

为什么基类的构造方法被调用两次?

来自分类Dev

方法被调用两次?

来自分类Dev

Ruby类继承以及如何避免两次调用super

来自分类Dev

ES6 OOP 从父类继承方法

来自分类Dev

为什么需要在Matlab中两次调用rng()

来自分类Dev

es6从同一类中调用类方法

来自分类Dev

es6类方法中的“ this”

来自分类Dev

Javascript 在类构造函数中调用类 (ES6)

来自分类Dev

从非类继承ES6 / TS类

来自分类Dev

ES6类多重继承

来自分类Dev

ES6类继承的性能

来自分类Dev

C#两次继承相同的类

来自分类Dev

两次调用方法类;一次用于行,然后用于列

来自分类Dev

两次调用方法类;一次用于行,然后用于列

来自分类Dev

Angular Service方法被调用两次?

来自分类Dev

如何防止方法被调用两次?

来自分类Dev

方法如何被调用两次?

来自分类Dev

Mockito模拟两次调用的方法

来自分类Dev

Angular Service方法被调用两次?

来自分类Dev

从基类继承两次时如何解决“错误:没有匹配的函数可调用”

来自分类Dev

NSOutlineTableView中的textShouldEndEditing被调用两次

来自分类Dev

在jQuery中重复两次类

来自分类Dev

在类React ES6中调用静态函数

来自分类Dev

ES6类中对super(props)的调用重要吗?

来自分类Dev

为什么两次调用SignalR Startup类的Configuration方法

来自分类Dev

如何在es6中导入本身需要在导入之前调用/初始化其功能/类的模块

来自分类Dev

实现authstatechanges后调用两次的类