Комментарии 2
Очень плохой перевод сомнительной статьи.
Инкапсуляция с фабричными функциями проще и понятнее. Они опираются на сферы применения, которые составляют большую часть языка JavaScript.
Инкапсуляция с классами, с другой стороны, требует добавления # к приватной переменной. Это может сделать вещи неуклюжими.
Уровень аргументации "лень писать на символ больше"?
Проще говоря, Классы требуют this, а Фабричные функции — нет. Я предпочитаю фабричные функции здесь, потому что:
• Контекст this может измениться (что может сбить с толку).
Меня сбивает с толку это предложение. Если это про то, что this
биндится в момент вызова, то это проблема того же уровня, что и "вызвал фабричную функцию с new
". И я не уверен, с чем из этого проблемы будут возникать чаще, учитывая выбранный автором стиль их именования (Foo()
вместо createFoo()
или makeFoo()
).
• Код, написанный с помощью фабричных функций, короче и чище (так как мы можем использовать инкапсулированные переменные без написания this.#variable).
Выигывать пару символов, теряя взамен возможность взглядом отличить поля от локальных переменных?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Разновидности объектно-ориентированного программирования (ОПП) в JavaScript. Часть 2