Chamar construtor de classe sem nova palavra-chave no ES6
Dada a definição da classe:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
Não é possível chamar diretamente o construtor da classe sem a palavra-chave new. Isso ocorre porque as classes no ES6 têm inerentemente uma função construtora que é invocada quando a classe é chamada.
Invocar uma classe sem new resulta em um erro:
Cannot call a class as a function
Esta mensagem de erro indica claramente que o construtor da classe só pode ser chamado com o operador new, que é necessário para criar uma nova instância da classe.
Para superar essa limitação, considere as seguintes abordagens :
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"
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3