如何将两个对象合并为包含方法的单个对象

How can you merge two objects into a single object including methods

本文关键字:对象 合并 包含 方法 单个 两个      更新时间:2023-09-26

我想将多个对象合并为一个对象,包括使用ES6语法的方法。我在这里有一个小提琴:http://www.es6fiddle.net/isvfozdu/,它显示了我想要完成的任务(下面的代码也是如此)。

我曾经摆弄过一些装饰器模式,它们看起来应该可以工作,但最终却行不通。

我试图解决的问题是一个对象,它根据其属性具有不同的功能,拥有所有的功能可能是有害的。

谢谢!

class A {
  hi(){
    console.log('hi');
  }
}
class B {
  bye(){
    console.log('bye');
  }
}
class C {
  hello(){
    console.log('hello');
  }
}
// x = A & B, not C
x.hi();
x.bye();
x instanceof A // true
x instanceof B // true
x instanceof C // false
// y = A & C, not B
y.h1();
y.hello();
y instanceof A // true
y instanceof B // false
y instanceof C // true

这里的想法是根据a实例的属性将一个类的功能添加到另一个类中。

let a = new A();
if(a.isEnabled){
    let b = new B();
    magicFunctionOrSomething(a, b);
}
a.bye();

据我所知,您需要原型链接。见MDN的解释由链接。第一个用法示例很简单,可能会对您有所帮助。MDN