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"
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3