这个()在javascript中是什么?

问题描述 投票:0回答:2

我理解javascript中的this关键字。我用它像this.method()this.variable =。但这是什么()。请参阅以下代码:

  static fromTX(tx, index) {
    return new this().fromTX(tx, index);
  }

请帮助我理解在javascript和上面的代码示例中使用this()。

javascript this
2个回答
7
投票

在静态方法中,this将引用构造函数,因此new this()将调用构造函数:

class Foo {
  constructor() {
    console.log('making instance');
  }
  static makeFoo() {
    return new this();
  }
}

const f = Foo.makeFoo();

当然,只有当this引用一个函数时才能调用this,否则它会抛出一个错误。通常,this将引用一个对象,而不是一个函数。


1
投票

让我们采取双向解决问题的方法: 首先,this引用类中的当前实例,并且是许多语言中的关键字。 this()是对构造函数的调用,它也可以包含各种参数。 其次,查看代码片段,它是一种静态方法 - 正是一种静态工厂方法。查阅以了解使用它的原因和位置以及更多详细信息。 该代码段提供了一个API,用于从params tx, index创建类对象。您可能希望这样做,以使调用此API的客户端更具可读性。可以安全地假设您在此方法中可能也有不同的API,仅用于创建类的对象。此外,在这种情况下,构造函数被标记为私有,以获得对对象实例的更多控制。

© www.soinside.com 2019 - 2024. All rights reserved.