Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript es6将两个静态类合并到一个对象中_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript es6将两个静态类合并到一个对象中

Javascript es6将两个静态类合并到一个对象中,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下代码: class A { static b() { } } class B { static c() { } } 我试图将这两个静态类合并为一个: const combined = { ...A, ...B }; 但是,合并后的对象会产生一个空对象,而我希望对象包含所有合并的静态方法 我做错了什么?您可以在新对象上设置方法 const combined = {A:A.b, B:B.c} 您可以从A扩展B,然后从B扩展另一个类 但是,如果您使用的是静态类,

我有以下代码:

class A {
   static b() {

   }
}

class B {
  static c() {

  }
}
我试图将这两个静态类合并为一个:

const combined = { ...A, ...B };
但是,合并后的对象会产生一个空对象,而我希望对象包含所有合并的静态方法


我做错了什么?

您可以在新对象上设置方法

const combined = {A:A.b, B:B.c}

您可以从A扩展B,然后从B扩展另一个类

但是,如果您使用的是静态类,那么最好只使用对象文本

A类{
静态b(){
console.log('称为A.b')
}
}
B类扩展了A类{
静态c(){
console.log('称为B.c')
}
}
类组合扩展了B{}
合并.b()

Combined.c()
您可以使用
对象获取类的静态方法数组。getOwnPropertyNames

A类{
静态staticMethod(){}
非静态方法(){}
}

log(Object.getOwnPropertyNames(A))是否尝试在新对象上定义静态方法?是。这就是我试图实现的,在新对象中定义静态方法。我希望在将来添加其他静态方法。我不希望每次创建一个新的时都静态地将它放在那里。然后,您可以使用
let
定义
combined
然后在重新定义
combined
和添加属性
类C{static d(){}时使用对象扩展;combined={…combined,C:C.d}