ES6 で新しいキーワードを使用せずにクラス コンストラクターを呼び出す
クラス定義が与えられている場合:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
これは不可能ですnew キーワードを使用せずにクラス コンストラクターを直接呼び出します。これは、ES6 のクラスには、クラスの呼び出し時に呼び出されるコンストラクター関数が本質的にあるためです。
新しい結果を持たずにクラスを呼び出すと、エラーが発生します:
Cannot call a class as a function
このエラー メッセージは、明らかに次のことを示しています。クラス コンストラクターは、クラスの新しいインスタンスを作成するために必要な new 演算子でのみ呼び出すことができます。
この制限を克服するには、次のアプローチを検討してください。
function Foo(x) { this.x = x; this.hello = function() { return `hello ${this.x}`; } }
(new Foo("world")).hello(); // "hello world"
var FooWrapper = function(...args) { return new Foo(...args) }; FooWrapper("world").hello(); // "hello world"
以上がES6 では「new」なしでクラス コンストラクターを呼び出すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。