类构造函数的调用函数

时间:2017-07-08 11:40:47

标签: javascript class async-await ecmascript-2017

有没有办法获取类的构造函数的调用函数?

class TestClass {
  constructor(options) {
    if(<caller> !== TestClass.create)
      throw new Error('Use TestClass.create() instead')
    this.options = options
  }

  static async create(options) {
    // async options check
    return new TestClass(options)
  }
}

let test = await TestClass.create()

我已尝试arguments.callee.callerTestClass.caller但我收到以下错误:

Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

Uncaught TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.

在Chrome 58中进行测试

1 个答案:

答案 0 :(得分:4)

您可以通过不同的方式实现此目的:只是拒绝使用构造函数,并让color='r'方法创建一个带有create的对象实例(不会调用构造函数):

Object.create