Извините, что воскресил старый вопрос, но я подумал, что могу внести пару очень простых примеров и объяснений для «манекенов». Ни один из других ответов, опубликованных таким образом, не иллюстрирует синтаксис, как первый пример MDN guide , который примерно такой же простой, как можно получить.
Getter:
var settings = {
firstname: 'John',
lastname: 'Smith',
get fullname() { return this.firstname + ' ' + this.lastname; }
};
console.log(settings.fullname);
..., конечно, будет записывать John Smith
. A getter ведет себя как свойство переменной объекта, но предлагает гибкость функции для вычисления возвращаемого значения на лету. Это в основном причудливый способ создания функции, которая не требует () при вызове.
Setter:
var address = {
set raw(what) {
var loc = what.split(/\s*;\s*/),
area = loc[1].split(/,?\s+(\w{2})\s+(?=\d{5})/);
this.street = loc[0];
this.city = area[0];
this.state = area[1];
this.zip = area[2];
}
};
address.raw = '123 Lexington Ave; New York NY 10001';
console.log(address.city);
... будет записывать New York
на консоль. Как и геттеры, сеттеры вызываются с тем же синтаксисом, что и установка значения свойства объекта, но являются еще одним причудливым способом вызова функции без ().
См. this jsfiddle для более тщательного, возможно, более практического примера. Передача значений в установщик объекта запускает создание или совокупность других объектов объекта. В частности, в примере jsfiddle передача массива чисел приводит к тому, что сеттер вычисляет средний, средний, режим и диапазон; затем устанавливает свойства объекта для каждого результата.