在ECMA6中组合扩展

Combining extensions in ECMA6

本文关键字:扩展 组合 ECMA6      更新时间:2023-09-26

我有一个关于ECMA6类扩展的问题。"旧的"方法允许我创建一个"类"(基本上是一个函数或对象),然后通过添加它的原型来"扩展"它。这使得第三方供应商为软件编写插件并轻松添加插件成为可能。然后,您只需实例化原始"类",并且它可以访问已添加到其原型中的所有内容。

在ECMA6中,您可以扩展类,但我不明白这如何为我提供相同的可能性。如果供应商X扩展了我的类Y,那么现在我必须实例化X而不是Y。如果另一个供应商添加了自己的扩展Z,那么现在我必须知道它们存在,然后在X和Z之间做出选择。

我刚刚开始学习ECMA6,所以我可能在这里错过了一些东西。我如何拥有一个ECMA6类,让不同的供应商扩展它,然后动态地获得一个包含所有功能(原始类和所有扩展)的实例?

谢谢!

您似乎将继承(在ES6 class语法中使用extends关键字)与扩增(通过将新方法混合到对象中来"扩展"对象)混淆了。

我不明白ES6类如何为我提供相同的可能性

并没有什么改变。ES6类仍然只是具有.prototype属性的函数,您可以像往常一样修改它们的原型对象。