Вызов конструктора класса без нового ключевого слова в 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
Это сообщение об ошибке ясно указывает на то, что конструктор класса можно вызвать только с помощью нового оператора, который необходим для создания нового экземпляра класса.
Чтобы Чтобы преодолеть это ограничение, рассмотрите следующие подходы:
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