【发布时间】: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