在 ECMA6 中组合扩展
Combining extensions in ECMA6
我有一个关于 ECMA6 class 扩展的问题。 "old" 方法允许我创建一个 "class" (基本上是一个函数或对象),然后通过添加到它的原型来 "extend" 它。这使得第 3 方供应商可以为软件编写插件并轻松添加它们。然后,您只需实例化原始 "class",它就可以访问已添加到其原型的所有内容。
在 ECMA6 中,您可以扩展 classes,但我看不出这如何为我提供相同的可能性。如果供应商 X 扩展了我的 class Y,那么现在我必须实例化 X 而不是 Y。如果另一个供应商添加了自己的扩展 Z,那么现在我必须知道它们存在,然后在 X 和 Z 之间进行选择。
我刚刚开始学习 ECMA6,所以我可能只是遗漏了一些东西。我怎样才能拥有 ECMA6 class,让不同的供应商对其进行扩展,然后即时获得一个包含所有功能(原始 class 和所有扩展)的实例?
谢谢!
您似乎混淆了继承(在 ES6 class
语法中使用 extends
关键字)与扩充("extending" 对象,通过将新方法混合到它们中)。
I fail to see how ES6 classes can provide me with the same possibilities
没有任何变化。 ES6 类 仍然只是带有 .prototype
属性 的函数,您可以像往常一样修改它们的原型对象。
我有一个关于 ECMA6 class 扩展的问题。 "old" 方法允许我创建一个 "class" (基本上是一个函数或对象),然后通过添加到它的原型来 "extend" 它。这使得第 3 方供应商可以为软件编写插件并轻松添加它们。然后,您只需实例化原始 "class",它就可以访问已添加到其原型的所有内容。
在 ECMA6 中,您可以扩展 classes,但我看不出这如何为我提供相同的可能性。如果供应商 X 扩展了我的 class Y,那么现在我必须实例化 X 而不是 Y。如果另一个供应商添加了自己的扩展 Z,那么现在我必须知道它们存在,然后在 X 和 Z 之间进行选择。
我刚刚开始学习 ECMA6,所以我可能只是遗漏了一些东西。我怎样才能拥有 ECMA6 class,让不同的供应商对其进行扩展,然后即时获得一个包含所有功能(原始 class 和所有扩展)的实例?
谢谢!
您似乎混淆了继承(在 ES6 class
语法中使用 extends
关键字)与扩充("extending" 对象,通过将新方法混合到它们中)。
I fail to see how ES6 classes can provide me with the same possibilities
没有任何变化。 ES6 类 仍然只是带有 .prototype
属性 的函数,您可以像往常一样修改它们的原型对象。