提问者:小点点

构造函数仅返回此


我有一个类,它需要在初始化时返回一个函数的值。 代码看起来是这样的。

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

  // CANNOT BE CHANGED
  constructor() {
    return this;
  }
}

在运行New MyClass()时,有没有一种方法可以在不更改构造函数的情况下调用并返回List()中的内容?

编辑:所以下面的代码应该如下:x=new BrandCollector();那么x应该等于[1,2,4,5,6]


共3个答案

匿名用户

您可以将类重新定义为其自身的代理:

null

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

  // CANNOT BE CHANGED
  constructor() {
    return this;
  }
}

MyClass = new Proxy(MyClass, { construct: () => MyClass.prototype.list });

let x = new MyClass;
console.log(x);

匿名用户

你可以给旧类分配一个新类。

null

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

    // CANNOT BE CHANGED
    constructor() {
    }
}

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

    constructor() {
        return this.list;
    }
}

MyClass = MyClass1;
var x = new MyClass;
console.log(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
  }
}

用法

const a = MyClass.List()

如果选项1将返回简单数组,那么在选项2中将返回具有属性a.MyArray的数组的类

这对你有帮助吗?