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()