Getter - это метод получения значения атрибута, а Setter - это метод установки значения атрибута. Методы Getter и Setter могут быть определены для любого предопределенного основного объекта или пользовательского объекта, добавляя новые свойства в существующие объекты.
Есть два способа определить метод Getter или Setter:
1. Определите, когда инициализация объекта
2. После определения объекта определение добавляется через методы объекта __definegetter__ и __definesetter__.
Единственное, что нужно сделать при определении методов Getter и Setter с использованием процесса инициализации объекта, - это префикс «Get» в методе Getter и «установить» в методе сеттера.
Еще одна вещь, которую следует отметить, это то, что метод Getter не имеет параметров, и метод сеттера должен иметь параметр, то есть новое значение атрибута, который будет установлен.
Например:
Кода -копия выглядит следующим образом:
o = {
Значение: 9,
получить b () {вернуть this.value;},
SET SETTER (x) {this.value = x;}
}
После определения объекта добавьте метод Getter или Setter в объект, используются два специальных метода __definegetter__ и __definesetter__. Эти две функции требуют, чтобы первые были названием Getter или Setter, приведенным в строке, а второй параметр является функцией как Getter или Setter.
Например, мы добавляем атрибут года к объекту даты:
Кода -копия выглядит следующим образом:
Date.prototype .__ definegetter __ ('year', function () {return this.getbleear ();});
Date.prototype .__ definesetter __ ('year', function (y) {this.setbyear (y)});
var теперь = новая дата;
блюд (сейчас. Year);
Теперь. Year = 2006;
блюд (сейчас);
Что касается того, для какой формы принять в основном зависит от стиля программирования индивидуума, первая форма компактная и легкая для понимания. Но если вы хотите добавить Getter или Setter после определения объекта, или прототип этого объекта не записан вами или не встроен, вам нужно использовать второй метод.
Вот реализация, которая добавляет атрибут внутреннего текста в браузер Mozilla:
Кода -копия выглядит следующим образом:
Htmlelement.prototype .__ definegetter__
(
"InnerText", function ()
// определить метод Getter, чтобы получить значение внутреннего текста,
// Итак, вы можете прочитать это сейчас!
{
var textrange = this.ownerdocument.createrange ();
// Использование диапазона для извлечения содержания объекта
textrange.selectnodecontents (это);
// Получите только содержимое узла объекта
вернуть textrange.toString ();
// дайте внутренний текст значение содержимого узла
}