Главная Q2W Блог Запись
26 апр 2019 (OFF) Q2W (B) :

Приватные поля классов в JS

Однажды в классы javascript добавили ключевое слово static для статических членов класса.
Т.е....
Подробнее...
Метки: devel

Комментарии (18)

Нормальные люди пишут на ts
# - они кажется объяснили лаконичностью. Private - ну очень долго набирать, это убьёт стартапы в зародыше, разрушит agile и усложнит kanban.
static это предложенная TC39 экспериментальная фича, которой ещё нет в спецификации ES. Так что это пока не часть JS и ничего там не добавляли; с приватными полями вроде та же история. /закончил доебываться/

А такой странный синтаксис приватного поля объясняется очень просто: зарешение проблемы коллизии имен. Поясню кодом:

class ClassWithGetSet {
#msg = 'hello world';
get msg() {
return this.#msg;
}
set msg(x) {
this.#msg = `hello ${x}`;
}
}
Если бы поле "msg" называлось как и сеттеры и геттеры, то последние бы просто игнорировались при использании поля в других местах.

class ClassWithGetSet {
msg = 'hello world';
get msg() {
return this.msg;
}
set msg(x) {
this.msg = `hello ${x}`;
}
}

var a = new ClassWithGetSet()
a.msg = 'etst'
console.log(a.msg); // распечатает 'etst', а не 'hello etst'
Вообще странные люди, у которых кол-во ошибок с типами настолько велико, что пришлось изобретать целый подъязык с типами и трансляцию его в js.

У меня таких ошибок практически не встречается (за то встречается много других).
Удваиваю. У меня куда больше проблем с архитектурой приложения, чем с "undefined is not a function"
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Битва танков
Управляй многотонной боевой машиной, участвуй...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play