Vladimir
private - это для статических типов
Vladimir
а тут про рантайм
Алексей
# это такое близарукое решение что просто ужас
Vladimir
Разобрался. Всем спасибо! :)
Алексей
что если понадобиться добавить protected internal или еще какой модификатор свойства?
class Test {
#@%fk
constructor() {
this.#@%fk = 1;
}
}
против
class Test {
private static internal fk
constructor() {
this.fk = 1;
}
}
Vladimir
да не понадобится
Vladimir
это не модфикатор, это принципиально другая вещь
Vladimir
там же написано все, это сахар для WeakMap
Vladimir
к свойствам не имеет никакого отношения
Алексей
к свойствам не имеет никакого отношения
тут да - точнее будет сказать что это модификатор полей ( а он может быть private, protected, internal, readonly ) и # не учитывает вообще ничего кроме private. В следующей версии снова будем язык переписывать ибо V8 лень имплементировать нормальные модификаторы?
Loyd
А что такое "нормальные" модификаторы?
Loyd
Какая разница между соглашением начинать приватные поля с "_" и модификатора private?
Алексей
class Test {
private static internal fk
constructor() {
this.fk = 1;
}
}
Алексей
это норма (с)
Алексей
а вот что предлагают
class C {
#x;
constructor() {
this.#x = 1;
}
}
Алексей
this.#x
Loyd
А чем символы не устраивают?
Vladimir
они не приватные
Loyd
Эм.
Loyd
Добавь "_" и будет тебе приватность, в чём дело?
Loyd
Символы решают проблему уникальности.
Алексей
А чем символы не устраивают?
что если понадобиться добавить protected internal или еще какой модификатор свойства?
class Test {
#@%fk
constructor() {
this.#@%fk = 1;
}
}
Vladimir
злесь речь о тру приватности
Vladimir
это НЕ свойства
Loyd
Что такое "тру" приватность?
Vladimir
Vladimir
private fields
Loyd
Ты ведь в курсе, что инкапсуляция не в этом заключается?
Vladimir
не private properties
Loyd
И да, в любом языке можно прочитать что хочешь.
Loyd
Хм. А зачем?
Vladimir
полезно для платформ, в т. ч. node.js
Loyd
И? Причём тут физическая недоступность?
Vladimir
при том что js изначально расчитан испольнение небезопасного кода
Vladimir
для этого нужна физическая изоляция
Vladimir
движкам, браузерам
Loyd
Физическая изоляция не нужна и она бесмысленна.
Loyd
У тебя дебаггер в рантайме, какая изоляция?
Vladimir
поверь, тебе нужна изоляция
Loyd
Эм. Нет, не нужна
Loyd
Мой код упакован в модули и прочее, как чужой код доступ к нему получит вообще?
Алексей
Физическая изоляция не нужна и она бесмысленна.
нужна для разработчиков API - вспомните React и Context - Context API было приватным - им всеравно воспользовались для React Route и теперь не могут выпилить ибо усе - куча софта теперь использует это приватное API
Loyd
Использование приватного API это проблема использующего
Loyd
Я декларировал, что это приватный интерфейс.
Loyd
Этого достаточно
Vladimir
Если бы внутренности браузеров были бы доступны через _
Vladimir
было бы весело
Loyd
Инкапсуляция это *логическое* деление, а не физическое
Vladimir
Ребят. Теперь мне нужно заняться профайлингом. А именно хочется заменить время выполнения некоторых функций и прочего. С помощью чего такое можно и лучше сделать?
Владимир
generally hidden
Loyd
Физического деления не было и не будет. Внутри одного процесса ты всегда сможешь добраться до нужного участка, из любого ЯП. Откуда ты цитаты кидаешь, я не знаю, но советовал бы таки классиков (GoF, Майер) почитать
Владимир
это примерно значит, что нельзя, но очень хочется и есть рефлекшн, то можно
Vladimir
> Paul
из любого ЯП
Vladimir
не из любого
Loyd
Пример?
Vladimir
вот этот пропозал и есть пример
Vladimir
из существующих - не знаю
Loyd
java — reflection, C/C++ — каст к void* и смещение, C# — GetField, Rust — unsafe + mem::transmute
Vladimir
нечто вроде C++ но без доступа к памяти, я бы сказал
Владимир
Vladimir
Спасибо
Andrey
или будет такой синтаксис? other.(private) x, определенно, что то не так
Anonymous
зачем во всех чатах одно и то же мусолить?
Vasiliy
))
Oleg
node -v
v0.10.29
Со мною все впорядке?
Andrey
Нет
Oleg
Oleg
Если я поставлю последнюю ноду, то все мои прошлые проекты продолжат работать?
Arseniy
Arseniy
Andrey