合并两个对象,但保留继承

Merge two objects but maintain inheritance

本文关键字:保留 继承 对象 两个 合并      更新时间:2023-09-26

所以,我有一个名为Color的类,另一个名为Component的类。目前,我创建了一个新的颜色组件,如下所示:

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

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

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

问题是,Color 类来自库,所以我无法使用我的扩展函数来维护我的继承。有没有办法合并这两个类,以便上面的两个代码行都返回 true?

不,这是不可能的,一个对象只能从 JavaScript 中的一个原型继承。

而构图绝对是建模的正确方法。没有既是Color又是Component这样的事情.您可能正在寻找一个Colored"类",用于具有颜色的东西,但您也会使用mixin来代替继承。