Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 构造函数只返回这个_Javascript_Node.js - Fatal编程技术网

Javascript 构造函数只返回这个

Javascript 构造函数只返回这个,javascript,node.js,Javascript,Node.js,我有一个类需要在启动时返回一个函数值。代码看起来像这样 class MyClass { get list() { return [1, 2, 4, 5, 6] } // CANNOT BE CHANGED constructor() { return this; } } 在运行new MyClass()时,是否有方法调用并返回我在list()中的内容而不更改构造函数 编辑:所以下面的代码应该如下 x=newbrandCollector() 然后x应该等于[

我有一个类需要在启动时返回一个函数值。代码看起来像这样

class MyClass {
  get list() {
    return [1, 2, 4, 5, 6]
  }

  // CANNOT BE CHANGED
  constructor() {
    return this;
  }
}
在运行
new MyClass()
时,是否有方法调用并返回我在
list()中的内容而不更改构造函数

编辑:所以下面的代码应该如下
x=newbrandCollector()

然后
x
应该等于
[1,2,4,5,6]
您可以为旧类分配一个新类

class-MyClass{
获取列表(){
返回[1,2,4,5,6]
}      
//不能改变
构造函数(){
}
}
类别MyClass1{
获取列表(){
返回[1,2,4,5,6]
}      
构造函数(){
返回此.list;
}
}
MyClass=MyClass1;
var x=新的MyClass;

控制台日志(x)您可以将类重新定义为其自身的代理:

class-MyClass{
获取列表(){
返回[1,2,4,5,6]
}
//不能改变
构造函数(){
归还这个;
}
}
MyClass=新代理(MyClass,{construct:()=>MyClass.prototype.list});
设x=newmyclass;

控制台日志(x)我认为你所要求的是不可能的,但还有其他方法可以实现

class MyClass {
  constructor(values){
   this.myArray = values
  }

  static List(){
    return [1,2,3,4] // option 1
    return new this([1,2,3,4]) //option 2
  }
}
用法

在选项1中,将返回简单数组,在选项2中,将返回带有数组的类作为属性
a.myArray


这对你有帮助吗?

那么你是说你想要它,这样如果你想
让x=new MyClass()
你会期望
x
成为
[1,2,4,5,6]
?如果是的话。。。为什么?当您调用
newmyclass()
时,您希望最终结果是什么?调用方是否应该接收
列表
数组?我不知道如何解析“启动时需要在内部返回函数值”或“调用并返回我的
list()
console.log((新的MyClass.list)
?听起来很像。为什么要用
new
调用构造函数,并期望得到一些不是类实例的东西?这没有多大意义。调用
new Foo()
时,必须返回
Foo
。这就是
new
所做的;归还任何其他东西都会破坏一切。(这是一个非理性的构造函数。你可以,但它完全出乎意料。)这是一个好的解决方案,不确定它是否能被接受,因为任务暗示我应该修改主类,但是嘿。你认为类构造函数可以被原型函数覆盖吗?我不能这样做。这是一个非常干净的解决方案,非常感谢。我不确定它是否通过,但我会试试。
const a = MyClass.List()