Синтаксис JavaScript Справочник JavaScript JSON Коды клавиш События

JavaScript: Типы свойств и их атрибуты

Свойства делятся на два типа: свойства с данными и свойства с функциями доступа.

Свойство с данными – это обычное свойство для хранения значения. Каждое свойство с данными имеет следующие 4 атрибута:

По умолчанию, при добавлении нового свойства объекту, атрибутам configurable, enumerable и writable присваивается значение true, а атрибуту value – указанное значение.

Чтобы изменить для свойства предлагаемое по умолчанию значение какого-либо атрибута нужно использовать метод Object.defineProperty(). Он принимает три аргумента: объект, для которого требуется добавить новое свойство или изменить уже существующее, имя свойства и объект-дескриптор. Свойства дескриптора соответствуют именам атрибутов: configurable, enumerable, writable и value. Все свойства дескриптора кроме value в качестве значения принимают только значение булева типа:

var user = {};
Object.defineProperty(user, "age", {
  writable: false,
  value: 25
});

alert(user.age);   // 25
user.age = 10;
alert(user.age);   // 25

При вызове метода Object.defineProperty() атрибуты configurable, enumerable и writable получают по умолчанию значение false, если не указано иное.

Свойство с функциями доступа – это свойство, которое не содержит данных. Вместо этого оно содержит функции чтения и записи. Каждое свойство с функциями доступа имеет следующие 4 атрибута:

Создать свойство с функциями доступа можно только с помощью метода Object.defineProperty():

var user = { _age: 0 };

Object.defineProperty(user, "age", {
  get: function () {
    return this._age;
  },
  set: function (newValue) {
    if (newValue > 0)
      this._age = newValue;
  }
});

alert(user.age);   // 0
user.age = -10;
alert(user.age);   // 0
user.age = 10;
alert(user.age);   // 10

Определять сразу обе функции доступа не обязательно. Если свойству назначена только функция чтения, это означает, что оно не поддерживает запись. Если свойству назначена только функция записи, это означает, что оно не поддерживает чтение.

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru

Реклама на сайте | puzinfo@puzzleweb.ru | ruen