「new」キーワードを使用せずに ES6 クラス コンストラクターを呼び出すにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-26 02:27:27
オリジナル
534 人が閲覧しました

How Can I Call an ES6 Class Constructor Without the

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!