В ES6 можно определять анонимные классы и немедленно создавать их экземпляры. Хотя на первый взгляд этот синтаксис может показаться привлекательным, очень важно понимать его подводные камни и то, почему его вообще следует избегать.
Чтобы напрямую создать экземпляр анонимного класса, мы используем следующий синтаксис:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
За кулисами это приводит к созданию новой функции-конструктора и объекта-прототипа для каждого экземпляра. Это означает, что несколько объектов, созданных с использованием этого метода, не будут иметь никаких преимуществ от наследования классов или отношений прототипов.
Кроме того, этот подход подрывает попытки создания одноэлементных объектов с использованием анонимных классов. К функции-конструктору по-прежнему можно получить доступ и использовать ее для создания дополнительных экземпляров, сводя на нет предполагаемое одноэлементное поведение.
В свете этих предостережений настоятельно рекомендуется избегать использования немедленно создаваемых анонимных классов. Более простые объектные литералы предлагают более эффективную и понятную альтернативу:
var entity = { name: 'Foo', getName() { return this.name; } };
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3