【问题标题】:How can you merge two objects into a single object including methods如何将两个对象合并为一个对象,包括方法
【发布时间】:2017-01-17 22:22:15
【问题描述】:

我想将多个对象合并为一个对象,包括使用 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();

【问题讨论】:

  • 您需要在问题本身中包含相关代码
  • 已更改。谢谢阿米特
  • 好。现在可以演示用例了吗?
  • 你只需要B extends A吗?
  • 不,子分类不起作用。

标签: javascript class ecmascript-6 decorator


【解决方案1】:

据我了解,您需要原型链。通过链接查看 MDN 解释。第一个用法示例很简单,可能会对您有所帮助。 MDN

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2021-06-26
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2018-02-09
    • 2021-01-18
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多