Appeler le constructeur de classe sans nouveau mot-clé dans ES6
Étant donné la définition de la classe :
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
Il n'est pas possible d'appeler directement le constructeur de classe sans le mot-clé new. En effet, les classes dans ES6 ont intrinsèquement une fonction constructeur qui est invoquée lorsque la classe est appelée.
L'appel d'une classe sans nouveau entraîne une erreur :
Cannot call a class as a function
Ce message d'erreur indique clairement que le constructeur de classe ne peut être appelé qu'avec l'opérateur new, qui est requis pour créer une nouvelle instance de la classe.
Pour surmonter cette limitation, considérez les approches suivantes :
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"
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3