Narek
кто переопределил?
Smooth Operator
как насчет TypeScript
Anonymous
кто переопределил?
Придётся тогда делать сеттер, который ничего не делает. Иначе в экземпляре класса можено будет переопределить свойство.
Narek
Придётся тогда делать сеттер, который ничего не делает. Иначе в экземпляре класса можено будет переопределить свойство.
Во-первых не понятно кто это будет делать и от кого ты защищаешься, а во-вторых камон, это жс, тут при желании можно что угодно сделать.
Narek
как насчет TypeScript
Там такое есть, кстати, именно readonly
Narek
причем очень удобно, можно сразу в сигнатуре конструктора указывать
Narek
Не понимаю о чем ты
Anonymous
Не понимаю о чем ты
Ну, о чём я говорил — геттер и пустой сеттер. Логично же, если над этим будет сахар в виде ридонли. Так вот, вопрос был в том, планируется ли такое, и если да, то где почитать.
Narek
Еще раз, тебе нужна возможность создать поле, которое можно только прочитать. Я предлагаю тебе get, который для этого и сделан, в чем проблема?
Alex
Три раза перепроверил название чата, пока читал утреннюю переписку
Александр
Zpf,sk
Александр
Я забыл сделать бэкап
Александр
http://pastebin.com/hCjAhLkv
Александр
Вот почему не удаляется элемент если снята галочка? А обязательно надо страницу перезагружать
Alex
Потому что #noobs: https://telegram.me/joinchat/Be4rsT3Uyr1TjmSlrRc77g
Anonymous
Еще раз, тебе нужна возможность создать поле, которое можно только прочитать. Я предлагаю тебе get, который для этого и сделан, в чем проблема?
Так... Геттер будет в прототипе. Если ты сделаешь этому свойству присваивание, то запишешь новое свойство в экземпляр, которое перекроет то, что в прототипе. И в этом месте теряется весь смысл в геттере. А чтобы он не терялся, тебе нужно будет в классе объявить ещё и сеттер, который ничего не делает. Что мы в итоге получаем? Ради такой простой вещи тебе нужно объявлять геттер+сеттер, а реализация этой фичи вообще какая-то неявная, ведь если кто-то будет читать код, оне не увидит ридонли свойства — он увидит геттер и сеттер (это потом он поймёт, зачем они, это не сложно, но так читать код, всё равно, проблематичнее).
DeniskaAb
Иннополюсяне есть?
Narek
Narek
Tim
аа.. Все раздуплил)) Сетка оказывается эт не скрипт - это просто сетка, визуально артефакты сильно сжатго видео скрывает http://demo.ergo7.net/ergo/video-slider.html
Dreamerinnoise
Кажется тут кто-то не знает как работают геттеры-сеттеры
Anonymous
Оу. Спасибо.
Anonymous
Кажется тут кто-то не знает как работают геттеры-сеттеры
Я уверен, ты тоже много чего не знаешь.
🦥Alex Fails
Кажется тут кто-то не знает как работают геттеры-сеттеры
Это норма. Я тоже не знаю. Т.к. юзаю до хера языков, то все детали не помню. Поэтому подглядываю в инет
Dreamerinnoise
Я уверен, ты тоже много чего не знаешь.
Верно. В этом нет ничего страшного :3 Только я не называю костылями то, в чем не разбираюсь.
Anonymous
Верно. В этом нет ничего страшного :3 Только я не называю костылями то, в чем не разбираюсь.
Всем свойственно ошибаться. Я назвал это костылём, т.к. думал, что правильно понимаю его работу.
Anonymous
Если б сомневался, то пошёл бы гуглить. =)
Vlad
чтобы не стер записанное ранее
https://t.me/joinchat/AAAAAD3Uyr3trzb9rRc77g
Anonymous
set prop(newProp) { this._prop = newProp }
Anonymous
я так понял ошибка на скрине вызвана тем, что в классе забли добавить сеттер
Anonymous
из скринов выше
Anonymous
только вошел в группу )
Anonymous
как на чистом JS, я точно не знаю, использую TS, там именно так
Vlad
Ага
Anonymous
ну вот, чтобы можно было test.prop = 1 сделать, то нужен сеттер
Sergey
я думал юзать сеттеры/геттеры плохой стиль
Narek
я так понял ошибка на скрине вызвана тем, что в классе забли добавить сеттер
Ну вы чат читайте хоть, я там как раз человеку показывал, что если нет сеттера - нельзя будет записать в поле
⩔wein
ну вот, чтобы можно было test.prop = 1 сделать, то нужен сеттер
Там смысл был в том чтоб как раз нельзя было сделать.
Anonymous
я думал юзать сеттеры/геттеры плохой стиль
Я думаю все зависит от того, что в итоге должно выйти :)
Sergey
зачем что-то запрещать?
Sergey
всегда можно сделать test._prop = 1
Sergey
лучше уж юзать функции, а не сеттеры/геттеры
Narek
Почему?
Anonymous
Там смысл был в том чтоб как раз нельзя было сделать.
тогда, чтобы не было ошибки set prop(newProp) { console.warn('You can\'t do that) }
Sergey
Почему?
bad practices
Narek
Это не аргумент
Sergey
Почитай кодстайл от airbnb
Sergey
там тебе даже объяснят почему
⩔wein
зачем что-то запрещать?
Ну это вопрос из серии зачем нужны private свойства, const, и всякие immutable. Грубо говоря это нужно, чтобы уменьшить количество потенциально возможных ошибок
Anonymous
я уже год как использую TypeScript, там это все есть. И на JS, который нативный, совсем не хочется кодить.
Narek
Почитай кодстайл от airbnb
Такие себе у них аргументы, любой способ большего декларирования позволяет более строго описать систему - а это влечет за собой большую стабильность. Собственно в примере с сеттером сразу понятно, что эти поля во-первых торчат наружу и во-вторых если, например есть только геттер - у вас упадет при попытке записи.
Narek
Тогда ты всю суть теряешь
Sergey
Такие себе у них аргументы, любой способ большего декларирования позволяет более строго описать систему - а это влечет за собой большую стабильность. Собственно в примере с сеттером сразу понятно, что эти поля во-первых торчат наружу и во-вторых если, например есть только геттер - у вас упадет при попытке записи.
что лучше падение или не имение записывающей функции? Надежднее иметь конкретное API динамичность JS подразумевает, что подавляющее большинство свойств можно записывать И если ты высунул наружу свойство, значит его можно менять. Нормальное API класса это подразумевает. Но если свойство упадет при записи мне придется внезапно начать размышлять в другом направлении, так как это не очевидное поведение.
Narek
зачем тогда геттер, если можно просто в this прописать
Sergey
к тому-же сеттеры/геттеры не оптимизируются js-движком, в отличие от функций
Narek
а если вы даже и напишете - упадет в рантайме
Sergey
Нормально документированный класс как раз покажет, что у поля есть только геттер, а нормальное IDE не даст в него записать
Да бред, я и множество людей не пишут на JS в IDE Я хочу иметь очевидное API не глядя в комменты и документацию Код должен быть самодокументируем
Anonymous
имхо если это просто считать и записать проперти, то сеттеры юзать не надо. возникает ситуация, когда уже написанный класс, который уже используется везде. И возникла необходимость выполнения еще каких либо манипуляций с другими переменными, тогда проперти заменяется на сеттеры и геттеры
Sergey
V8 уже оптимизирует
пруфы в студию! Версию v8 с которой он умеет, версию node.js в которой есть этот v8, и версию хрома в которой он есть
Narek
https://habrahabr.ru/post/319936/
Sergey
это пруф?
Anonymous
один из моих примеров, когда был осуществлен переход от проперти к гетерам и сеттерам
Anonymous
Anonymous
Anonymous
изначально view был просто проперти
Sergey
https://habrahabr.ru/post/319936/
только вот геттеров/сеттеров в статье нет
Narek
Есть же