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}`; } }
Ce n'est pas possible pour appeler directement le constructeur de classe sans le nouveau mot-clé. 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, envisagez 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"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!