【问题标题】:"enhance" object to inherited class javascript\"enhance\" 对象到继承的类 javascript
【发布时间】:2022-08-18 17:26:22
【问题描述】:

我定义了两个类,比如 Animal 和 Rabbit。 Rabbit 扩展了 Animal 并且除了 Animal 中定义的方法之外还有一些额外的方法。

当用户运行我的应用程序时,会创建一个 Animal 实例(比如 myAnimal)。然后根据用户所做的事情,我可能需要将 myAnimal 转换为继承的类 Rabbit。这在现代 JavaScript 中是否可行,所以在 Rabbit 中定义的附加方法现在可能对 myAnimal 可用?

  • 当然。为什么不。但不清楚你到底想做什么。定义“用户做什么”。也许是狂野的Object.setPrototypeOf()?
  • @Marc仅仅覆盖原型是不够的,子类可能已经在构造函数中设置等。更好的方法是使子类可以从父类构造,例如使new Rabbit(new Animal()) 或Rabbit.fromAnimal(new Animal()) 有效等。
  • 由于 JS 使用原型继承,如果您对 Animal 对象进行更改,它将反映在以它为原型的对象中。

标签: javascript


【解决方案1】:

你不能。
否则,您可以创建Rabbit - myRabbit 的实例,其属性为myAnimal。 (上面@Etheryte 的评论)
或使用打字稿的decorator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多