В чём профит ваших аксессоров в сравнении с простым обращением к свойствам объекта?
В том, что можно не писать каждый раз object.setProperty(propertyName, value), или как-то так, а делать обычное присваивание свойста: object.property= value, что выглядит читабельнее и естественнее. Дальше, упрощается обращение к свойствам и запись — их не приходится делить на функции getProperty и setProperty (конечно, можно сделать одну, проверяющую количество аргументов, но это тоже так себе выход) — чтение и запись свойства производятся через обращение к самом свойству (obj.property), а все изменения внутри объекта производят аксессоры.
Зачем в геттере/сетере писать километровый switch
Вообще-то, «километровый switch» можно и не писать. Обычно сеттеров (и геттеров) — один-два на объект. Но если больше — можно сделать объект setters, в котором по имени изменяющегося св-ва будут храниться нужные функции. Тогда достаточно будет просто сделать так: setters[propertyName]().
Обидно, такой хороший коммент, а я плюс поставить не могу. Ну, тогда просто спасибо)
Изначально статья задумывалась как пример эмуляции unsafeWindow под хромом — гугл не давал нормальных ответов, как это сделать. А в процессе я немного увлёкся. Так что да, статья точно неполная.
var u ='undefined'
, win = typeof unsafeWindow !=u ? unsafeWindow: window;
Это не будет работать под хромом — там unsafeWindow есть, но нет у него того функционала.
Опять же, присвоение переменной значения this.unsafeWindow — на порядок короче, и будет работать и под лисой так же.
Это будет жёсткий прикол)
А вообще, конечно, я надеюсь на оконную игру с двусторонним буфером обмена, с нормальной поддержкой клавиатурый…
Глядишь, года через три буду код писать в ide в игре))
В том, что можно не писать каждый раз object.setProperty(propertyName, value), или как-то так, а делать обычное присваивание свойста: object.property= value, что выглядит читабельнее и естественнее. Дальше, упрощается обращение к свойствам и запись — их не приходится делить на функции getProperty и setProperty (конечно, можно сделать одну, проверяющую количество аргументов, но это тоже так себе выход) — чтение и запись свойства производятся через обращение к самом свойству (obj.property), а все изменения внутри объекта производят аксессоры.
Вообще-то, «километровый switch» можно и не писать. Обычно сеттеров (и геттеров) — один-два на объект. Но если больше — можно сделать объект setters, в котором по имени изменяющегося св-ва будут храниться нужные функции. Тогда достаточно будет просто сделать так: setters[propertyName]().
Честно говоря, не понял, причём здесь MooTools — мы же, вроде как, о другой библиотеке речь ведём)
Тысячи пользователей… Позвольте полюбопытствовать: что вы пишете?
Изначально статья задумывалась как пример эмуляции unsafeWindow под хромом — гугл не давал нормальных ответов, как это сделать. А в процессе я немного увлёкся. Так что да, статья точно неполная.
Это не будет работать под хромом — там unsafeWindow есть, но нет у него того функционала.
Опять же, присвоение переменной значения this.unsafeWindow — на порядок короче, и будет работать и под лисой так же.