我理解javascript中的this
关键字。我用它像this.method()
或this.variable =
。但这是什么()。请参阅以下代码:
static fromTX(tx, index) {
return new this().fromTX(tx, index);
}
请帮助我理解在javascript和上面的代码示例中使用this()。
在静态方法中,this
将引用构造函数,因此new this()
将调用构造函数:
class Foo {
constructor() {
console.log('making instance');
}
static makeFoo() {
return new this();
}
}
const f = Foo.makeFoo();
当然,只有当this
引用一个函数时才能调用this
,否则它会抛出一个错误。通常,this
将引用一个对象,而不是一个函数。
让我们采取双向解决问题的方法:
首先,this
引用类中的当前实例,并且是许多语言中的关键字。
this()
是对构造函数的调用,它也可以包含各种参数。
其次,查看代码片段,它是一种静态方法 - 正是一种静态工厂方法。查阅以了解使用它的原因和位置以及更多详细信息。
该代码段提供了一个API,用于从params tx, index
创建类对象。您可能希望这样做,以使调用此API的客户端更具可读性。可以安全地假设您在此方法中可能也有不同的API,仅用于创建类的对象。此外,在这种情况下,构造函数被标记为私有,以获得对对象实例的更多控制。