合并两个对象但保持继承
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",但您也可以为它而不是继承使用混合。
所以,我有一个名为 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",但您也可以为它而不是继承使用混合。