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
это не модфикатор, это принципиально другая вещь
Алексей
это не модфикатор, это принципиально другая вещь
private - это модификатор свойства. проблема какраз в том что люди из V8 тоже думают что это "принципиально" другая вещь - это не так
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
И да, в любом языке можно прочитать что хочешь.
Vladimir
И да, в любом языке можно прочитать что хочешь.
в любом, не в любом - здесь хотят сделать так, чтобы было нельзя
Loyd
Хм. А зачем?
Vladimir
полезно для платформ, в т. ч. node.js
Алексей
Ты ведь в курсе, что инкапсуляция не в этом заключается?
Encapsulation can be used to hide data members and members function. ...offer the programmer a degree of control over what is hidden, typically via keywords like public and private
Loyd
И? Причём тут физическая недоступность?
Vladimir
при том что js изначально расчитан испольнение небезопасного кода
Vladimir
для этого нужна физическая изоляция
Vladimir
движкам, браузерам
Loyd
Физическая изоляция не нужна и она бесмысленна.
Loyd
У тебя дебаггер в рантайме, какая изоляция?
Vladimir
Физическая изоляция не нужна и она бесмысленна.
ты скачиваешь говнокод из интрнета и запускаешь на своем компьютере
Vladimir
поверь, тебе нужна изоляция
Loyd
Эм. Нет, не нужна
Loyd
Мой код упакован в модули и прочее, как чужой код доступ к нему получит вообще?
Алексей
Физическая изоляция не нужна и она бесмысленна.
нужна для разработчиков API - вспомните React и Context - Context API было приватным - им всеравно воспользовались для React Route и теперь не могут выпилить ибо усе - куча софта теперь использует это приватное API
Loyd
Использование приватного API это проблема использующего
Vladimir
Использование приватного API это проблема использующего
это твоя проблема, если ты хочешь, чтобы его не использовали
Loyd
Я декларировал, что это приватный интерфейс.
Loyd
Этого достаточно
Vladimir
Если бы внутренности браузеров были бы доступны через _
Vladimir
было бы весело
Алексей
Использование приватного API это проблема использующего
Увы нет.. инкапсуляцию не просто так придумали. А чтобы защитить от ошибок.
Loyd
Инкапсуляция это *логическое* деление, а не физическое
Vladimir
Ребят. Теперь мне нужно заняться профайлингом. А именно хочется заменить время выполнения некоторых функций и прочего. С помощью чего такое можно и лучше сделать?
Алексей
Инкапсуляция это *логическое* деление, а не физическое
Under this definition, encapsulation means that the internal representation of an object is generally hidden from view outside of the object's definition физическое
Владимир
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
class Test { private static internal fk constructor() { this.fk = 1; } }
Так там есть другие примеры, где private a уже не получится использовать)
Andrey
или будет такой синтаксис? other.(private) x, определенно, что то не так
Anonymous
зачем во всех чатах одно и то же мусолить?
Алексей
зачем во всех чатах одно и то же мусолить?
Это ты во всех и тех-же чатах :) не все так делают
Vasiliy
))
Oleg
node -v v0.10.29 Со мною все впорядке?
Andrey
Нет
Oleg
Нет
Что нужно делать?
Oleg
Если я поставлю последнюю ноду, то все мои прошлые проекты продолжат работать?
Arseniy