Comments 24
Первый раз слышу о Getter и Setter в JS… сколько пишу на JS, такого не видел. Немного в шоке…
habrahabr.ru/blogs/javascript/108295/ — более полная статья
Вроде давно уже все про них говорят, правда использовать толком пока нельзя.
Тогда вам сюда: ejohn.org/blog/javascript-getters-and-setters/ и далее ejohn.org/blog/ecmascript-5-objects-and-properties/ :)
Наверно вот так и работает ExtJS 4… не дошли руки посмотреть как там работают Getter и Setter. Ну теперь буду думать, как можно применять в повседневной практике.
А в чем проблема с методами без параметров? Так и вызвать
Но если ваш код еще предстоит кому-то читать, то лучше конечно такое не писать.
Obj.Destroy;
Но если ваш код еще предстоит кому-то читать, то лучше конечно такое не писать.
Вы неправильно используете геттеры/сеттеры. Они нужны только для того, чтобы можно было сделать что-нибудь с инкапсулированным полем (вроде бы это нельзя сделать в JS). Скажем, сделать его только для чтения. Так что не перетрудитесь.
Не стоит забывать про удручающую производительность properties в JS: jsperf.com/object-defineproperty-vs-definegetter-vs-normal
В других языках есть и свойства с параметрами для особых извращений:
thedailywtf.com/Articles/Property-Basics.aspx
thedailywtf.com/Articles/Property-Basics.aspx
Это замечательно, но остается вопрос — зачем всё это, если всё равно можно по-простому обратиться к свойству объекта через foo._bar в обход этих сеттеров-геттеров? Еще и быстрее будет.
Дело не в защите, а в поведении.
чтобы было больше путаницы? тогда в следующей версии надо ввести перегрузку операторов.
В свое время меня очень раздражали т.н. properties и их поведение в C#, и очень радует то, что по сей день их не ввели в C++. Действительно, есть некий предел, когда поведение кода невозможно определить по его внешнему виду, однако тут, видимо, все дело в традициях. Скажем так, любой код на C# пересыщен такого рода поведением, более того, считается хорошим тоном делать любые переменные внутри класса не просто переменными (variables), а именно свойствами (properties), потому читая сейчас код на С# я вполне четко осознаю, что операции присваивания — это далеко не просто присваивание, а целый процесс.
Из практики же могу сказать, что подобные вещи часто позволяют избегнуть больших изменений кода при рефакторинге. Иногда, заменив переменную на свойство и описав поведение при присвоении или получении значения, можно избежать написания кучи проверок в различных частях кода. Пример — присвоение нуля какой-то переменной, которая далее принимает участие в вычислениях как делитель, при чем используется эта переменная во многих местах кода. Есть два варианта рефакторинга для избежания ошибок деления: первый — найти и вставить проверку на 0 везде, где возможно (в том числе и в промежуточных результатах!), второй — описать свойство где и проверять значение на 0 при присвоении. Выгода очевидна.
Собственно о чем это все? О том, что все хорошо в меру и следует точно знать когда и какие свойства того или иного языка стоит применять (нормальный такой вывод в Ненормальном программировании").
Из практики же могу сказать, что подобные вещи часто позволяют избегнуть больших изменений кода при рефакторинге. Иногда, заменив переменную на свойство и описав поведение при присвоении или получении значения, можно избежать написания кучи проверок в различных частях кода. Пример — присвоение нуля какой-то переменной, которая далее принимает участие в вычислениях как делитель, при чем используется эта переменная во многих местах кода. Есть два варианта рефакторинга для избежания ошибок деления: первый — найти и вставить проверку на 0 везде, где возможно (в том числе и в промежуточных результатах!), второй — описать свойство где и проверять значение на 0 при присвоении. Выгода очевидна.
Собственно о чем это все? О том, что все хорошо в меру и следует точно знать когда и какие свойства того или иного языка стоит применять (нормальный такой вывод в Ненормальном программировании").
www.youtube.com/watch?v=e9Zq5JmoRNY
Вот здесь нашёл хоткеи, о которых не знал
правда, наряду с малоизвестными хоткеями, рассказывается и о баянных, вроде, «alt+tab», f1 — помощь, delete — удаление. Такой вот микс.
Вот здесь нашёл хоткеи, о которых не знал
правда, наряду с малоизвестными хоткеями, рассказывается и о баянных, вроде, «alt+tab», f1 — помощь, delete — удаление. Такой вот микс.
Но возможностей у Getter'ов и Setter'ов действительно много. Если скомбинировать все с тем же AJAX, можно добиться вполне кошерного вида вроде:
Но только при синхронном запросе. Как Вы добьётесь такого вида при асинхронном запросе?
Автор, используете ли вы что-то из названного в топике на практике?
я-то губу раскатал на JScript…
Облом — не работает это в системных скриптах, только в браузерах!
Облом — не работает это в системных скриптах, только в браузерах!
Sign up to leave a comment.
Нестандартное использование Get и Set в Javascript