
Narek
10.02.2017
07:20:54
Так... Геттер будет в прототипе. Если ты сделаешь этому свойству присваивание, то запишешь новое свойство в экземпляр, которое перекроет то, что в прототипе. И в этом месте теряется весь смысл в геттере. А чтобы он не терялся, тебе нужно будет в классе объявить ещё и сеттер, который ничего не делает. Что мы в итоге получаем? Ради такой простой вещи тебе нужно объявлять геттер+сеттер, а реализация этой фичи вообще какая-то неявная, ведь если кто-то будет читать код, оне не увидит ридонли свойства — он увидит геттер и сеттер (это потом он поймёт, зачем они, это не сложно, но так читать код, всё равно, проблематичнее).
Это не так работает

Тимур
10.02.2017
07:26:11
аа.. Все раздуплил)) Сетка оказывается эт не скрипт - это просто сетка, визуально артефакты сильно сжатго видео скрывает http://demo.ergo7.net/ergo/video-slider.html

Google

Dreamerinnoise
10.02.2017
07:35:38
Кажется тут кто-то не знает как работают геттеры-сеттеры

Котяй Негодяй
10.02.2017
07:57:33
Оу. Спасибо.

Alex Фэils?︙
10.02.2017
08:00:22

Dreamerinnoise
10.02.2017
08:01:19

Котяй Негодяй
10.02.2017
08:04:11
Если б сомневался, то пошёл бы гуглить. =)

Dreamerinnoise
10.02.2017
08:06:07

Vladimir
10.02.2017
08:17:04

Roma
10.02.2017
08:33:44
set prop(newProp) { this._prop = newProp }

Сергей
10.02.2017
08:37:03

Roma
10.02.2017
08:37:40
я так понял ошибка на скрине вызвана тем, что в классе забли добавить сеттер
из скринов выше

Google

Roma
10.02.2017
08:37:59
только вошел в группу )
как на чистом JS, я точно не знаю, использую TS, там именно так

Vladimir
10.02.2017
08:38:31
Ага

Roma
10.02.2017
08:39:03
ну вот, чтобы можно было test.prop = 1 сделать, то нужен сеттер

Сергей
10.02.2017
08:39:51
я думал юзать сеттеры/геттеры плохой стиль

Narek
10.02.2017
08:40:06

Roma
10.02.2017
08:40:37

Ywein
10.02.2017
08:40:39

Roma
10.02.2017
08:41:05

Сергей
10.02.2017
08:41:06
зачем что-то запрещать?
всегда можно сделать test._prop = 1
лучше уж юзать функции, а не сеттеры/геттеры

Narek
10.02.2017
08:42:03
Почему?

Roma
10.02.2017
08:42:04

Сергей
10.02.2017
08:42:26

Narek
10.02.2017
08:42:35
Это не аргумент

Сергей
10.02.2017
08:42:47
Почитай кодстайл от airbnb
там тебе даже объяснят почему

Ywein
10.02.2017
08:43:55
зачем что-то запрещать?
Ну это вопрос из серии зачем нужны private свойства, const, и всякие immutable.
Грубо говоря это нужно, чтобы уменьшить количество потенциально возможных ошибок

Roma
10.02.2017
08:44:31

Google

Сергей
10.02.2017
08:44:59

Ywein
10.02.2017
08:45:49

Roma
10.02.2017
08:46:00
я уже год как использую TypeScript, там это все есть. И на JS, который нативный, совсем не хочется кодить.

Narek
10.02.2017
08:46:44
Почитай кодстайл от airbnb
Такие себе у них аргументы, любой способ большего декларирования позволяет более строго описать систему - а это влечет за собой большую стабильность. Собственно в примере с сеттером сразу понятно, что эти поля во-первых торчат наружу и во-вторых если, например есть только геттер - у вас упадет при попытке записи.

Roma
10.02.2017
08:48:28

Narek
10.02.2017
08:48:42
Тогда ты всю суть теряешь

Сергей
10.02.2017
08:48:53

Narek
10.02.2017
08:48:57
зачем тогда геттер, если можно просто в this прописать

Сергей
10.02.2017
08:49:48
к тому-же сеттеры/геттеры не оптимизируются js-движком, в отличие от функций

Narek
10.02.2017
08:50:05
а если вы даже и напишете - упадет в рантайме

Сергей
10.02.2017
08:50:42

Roma
10.02.2017
08:50:45
имхо если это просто считать и записать проперти, то сеттеры юзать не надо. возникает ситуация, когда уже написанный класс, который уже используется везде. И возникла необходимость выполнения еще каких либо манипуляций с другими переменными, тогда проперти заменяется на сеттеры и геттеры

Narek
10.02.2017
08:50:51

Сергей
10.02.2017
08:51:30
V8 уже оптимизирует
пруфы в студию!
Версию v8 с которой он умеет, версию node.js в которой есть этот v8, и версию хрома в которой он есть

Narek
10.02.2017
08:52:22
https://habrahabr.ru/post/319936/

Сергей
10.02.2017
08:52:37
это пруф?

Roma
10.02.2017
08:53:19
один из моих примеров, когда был осуществлен переход от проперти к гетерам и сеттерам

Admin
ERROR: S client not available

Roma
10.02.2017
08:53:23

Google

Roma
10.02.2017
08:53:32
изначально view был просто проперти

Сергей
10.02.2017
08:54:03

Narek
10.02.2017
08:54:25
Есть же
хотя там странно предложение составлено, может и не оптимизируются

Сергей
10.02.2017
08:54:50
какого хрена при простой записи свойства происходит сложная медленная операция?
Это нихрена не очевидно, я даже могу не подозревать о такой херне
это пиздец ребята

Roma
10.02.2017
08:55:39
мде....
зачем ругаися... не зная логики софтины начинаешь судить?

Сергей
10.02.2017
08:57:04
да неважно логика какая
э
это либо легаси
либо говнокод

Roma
10.02.2017
08:57:21
я просто показал пример как прорепти прекачевала в геттеры и сеттеры

Сергей
10.02.2017
08:57:37
лучше бы функцию написал

Roma
10.02.2017
08:58:01
и рафакторить 100500 кода?

Сергей
10.02.2017
08:58:31
вот так и появляется говнокод в проекте
а так ты 100500 кода замедлил в хер знает сколько раз
+ усложнил понимание кода другими людьми
Ты изменил логику

Narek
10.02.2017
08:58:46

Google

Roma
10.02.2017
08:59:00
ок

Artem
10.02.2017
08:59:18
@sovamist, в самом по себе set нет ничего страшного, но при условии, что этот set не будет создавать видимых снаружи сайд-эффектов. Если там перегенеряетс внутренний кеш или обновляются внутренние вычисляемые поля - то всё хорошо
но вот если ты сетишь одно поле, а меняется ещё и другое (публично) - то да, то говно

Roma
10.02.2017
09:00:42