«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Являются ли немедленно созданные анонимные классы в ES6 плохой идеей?

Являются ли немедленно созданные анонимные классы в ES6 плохой идеей?

Опубликовано 9 ноября 2024 г.
Просматривать:628

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Анонимные классы, созданные немедленно: рецепт катастрофы

В ES6 возможность определять анонимные классы обеспечивает синтаксический сахар для объявлений классов. Несмотря на удобство, немедленное создание экземпляров таких классов может привести к множеству проблем.

Что происходит за кулисами?

Когда экземпляр анонимного класса создается немедленно, JavaScript создает новую функцию-конструктор и динамически создавать прототип объекта. В результате каждой оценки выражения создается отдельная функция-конструктор и прототип.

Недостатки немедленного создания экземпляров

Эта практика имеет несколько существенных недостатков:

Отсутствие возможности повторного использования:
В отличие от именованных классов, анонимные классы, экземпляры которых создаются немедленно, каждый раз создают новый конструктор и прототип. Это означает, что несколько экземпляров не будут использовать один и тот же прототип, теряя преимущества наследования классов и совместного использования прототипов.

Ошибка синглтона:
Если целью использования этого шаблона является создание одноэлементный объект, он терпит неудачу. Функция конструктора остается доступной, что позволяет создавать несколько экземпляров с использованием нового объектаentity.constructor.

Избегайте любой ценой

Консенсус ясен: следует избегать немедленного создания экземпляров анонимных классов. Простой объектный литерал обеспечивает более эффективную и простую альтернативу:

var entity = {
  name: 'Foo',
  getName: function() { return this.name; }
};

Предостережение: вопросы межъязыкового взаимодействия

Хотя новый шаблон класса приемлем в некоторых других языках, в JavaScript он ведет себя иначе. Динамическая природа создания классов в JavaScript лишает эти языки преимуществ.

Заявление о выпуске Эта статья перепечатана по адресу: 1729392316. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3