首页 > 解决方案 > 构造函数只返回这个

问题描述

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

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

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

有没有办法在不更改构造函数的情况下调用并返回我list()在运行时所拥有的内容?new MyClass()

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

标签: javascriptnode.js

解决方案


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

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


推荐阅读