ホームページ >ウェブフロントエンド >jsチュートリアル >「new」キーワードを使用せずに ES6 クラス コンストラクターを呼び出すにはどうすればよいですか?
ES6 では、クラスはコンストラクター関数の糖衣構文です。 new キーワードを指定せずにクラスを呼び出した場合、クラスの新しいインスタンスは作成されません。代わりに、クラスのコンストラクター関数を直接呼び出します。
次のクラスについて考えます:
<code class="javascript">class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }</code>
new キーワードなしでこのクラスを呼び出そうとすると、エラーが発生します:
Cannot call a class as a function
これは、クラス コンストラクターがクラスの新しいインスタンスを作成するように設計されているためです。 new 演算子を使用せずにそれらを呼び出すことは、通常の関数を呼び出すことと同じです。
new キーワードなしでクラス コンストラクターを呼び出せるようにするには、次のようにコンストラクター関数とアロー関数を組み合わせて使用できます。
<code class="javascript">class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } } const FooWithoutNew = () => new Foo(...arguments);</code>
これで、FooWithoutNew を使用して new キーワードなしでクラス コンストラクターを呼び出すことができます。
FooWithoutNew("world").hello(); // "hello world"
ただし、このアプローチにはいくつかの欠点があることに注意することが重要です。まず、別の関数を作成する必要があるため、不便な場合があります。次に、新しいインスタンスを返すコンストラクターの動作が壊れます。
一般に、明確さと一貫性のために、常に new キーワードを使用してクラス コンストラクターを呼び出すことをお勧めします。
以上が「new」キーワードを使用せずに ES6 クラス コンストラクターを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。