合并两个对象但保持继承

Merge two objects but maintain inheritance

所以,我有一个名为 Color 的 class,另一个名为 Component。 目前我像这样创建一个新的 ColorComponent:

ColorComponent = Component.extend({
  init: {
    this.color = new Color();
  }
});

但我不想通过键入 colorComponent.color.r 之类的内容来访问颜色变量,我想直接访问 colorComponent.r 之类的变量。 所以我使用了一个合并函数来合并这两个对象,但这破坏了我的 class 继承。

colorComponent instanceof ColorComponent //true
colorComponent instanceof Color //false

问题是,颜色 class 来自一个库,所以我不能使用我的扩展函数来维护我的继承。有什么方法可以合并这两个 classes 以便上面的两个代码行 return 为真?

不,那不可能,一个对象在JavaScript中只能继承一个原型。

composition 绝对是对此建模的正确方法。不存在既是 Color 又是 Component 的东西。对于 具有 颜色的东西,您可能正在寻找 Colored "class",但您也可以为它而不是继承使用混合。