【问题标题】:Can a Module Pattern object inherit from a Constructor Pattern object?模块模式对象可以从构造模式对象继承吗?
【发布时间】:2017-02-04 00:04:48
【问题描述】:

(我对 javascript 和整个原型/继承概念有点陌生,所以如果这是一个愚蠢的问题,我深表歉意)

在我的代码库中,我有一个混杂的 Revealing-Module-Pattern 类型的对象,然后我也有使用 Constructor-Pattern 的对象(其中实例得到更新)。

我还有一个提供 EventEmitter 功能的代码块(用构造函数类型模式编写)。是否可以将此代码用作 Constructor-Pattern 对象和 Revealing-Module-Pattern 对象的基类? 尝试这样做有意义吗?

【问题讨论】:

  • 你的问题很模糊。在 JavaScript 中重用代码确实几乎总是可能的,但是这样做的方法会根据您的具体情况而有所不同。如果您提供了一个您想做的具体示例,将会有所帮助。

标签: javascript inheritance design-patterns


【解决方案1】:

首先,只有“constructor-type-pattern”对象遵循传统的继承形式,其中一个类扩展另一个类,然后您创建对象的实例。

“Revealing-module-pattern”只是一种封装数据并仅公开部分数据的方式,当您使用时没有 instancesclasses 的概念使用该模式。
如果你想重用这样一个“普通旧对象”的代码,你可以使用"prototypal inheritance",这意味着你的子对象每次被要求提供一个它没有的成员时都会指向父对象。

在这两种情况下,您都使用Object.create 创建具有其他原型对象的对象,请查看examples at MDN

另外请注意,ES2015 已经发布,并且使用 native syntactic sugarclassextends 的形式使经典 OOP 变得更容易。

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多