@Petroveg: наверное из-за работ я не могу перейти по ссылке и посмотреть о каких именно геттерах-сеттерах Вы говорите, так как смотря вчера я не заметил чего-то необычного. Не могли бы Вы пояснить, о чем именно говорите?
Понимаете, js для меня не первый язык и в моем родном языке, как и в ооп, принято на каждое public свойство писать аксццессор. А это в свою очередь означает, что в среднем у меня по пять get-set на объект.
Вот я и спрашиваю мнение опытных, чтобы они подумали, увидев правильный, с точки зрения ооп, но возможно, нелепый, с точки зрения js?
@vasIvas: там речь о встроенных геттерах и сеттерах. Тех самых, что вы привыкли писать. Вот кусок кода:
var o = {
a: 20,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
}
};
o.c = 10; // Вызывает сеттер, который присваивает 10 / 2 свойству a
console.log(o.b); // Вызывает геттер, который возвращает a + 1 (6)
Видите, как нативные вызываются?
А писать функцию-геттер для конкретного свойства, чтобы обратиться к x.a, или универсальную функцию, чтобы найти x['a'] — какая разница? Только лишь вопрос привычки — иметь их много, или только пару.
@Petroveg: Спасибо! Хотя я вчера и видел визуально эту конструкцию, но не понял её предназначения, наверное из-за того, что не предполагал, что в js есть аксцессоры.
А можно у Вас поинтересоваться, как часто Вы создаете get-set и как Вы их оформляете, отдельный для каждого свойства или всего два и потом по строке получаете?
Поскольку в Javascript до недавнего времени приватных свойств отродясь не было, то и в геттерах смысла не было никакого. Так что привычки такой нет и не помогу в этом.
Но вот ввели в 1.8 геттеры и сеттеры, добавили создание свойств с указанием приватности, неизменяемости и т.д. Пока приватность фурычит только в режиме use strict, да и тяжкое наследие IE8 нет-нет, да и пробьётся, так что привычки стойкой и не появляется.
Думаю, использование геттеров и сеттеров может войти в привычку, однако на данный момент паттерн «Модуль» решает вопрос с приватностью.
Это Ваш выбор и всем всё равно, главное чтобы быстро было, НО моя практика говорит что первый случай работает гораздо быстрее и очевиднее, вобщем всё смотря в каком контексте