Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Объект, в котором будет создаваться или настраиваться свойство.

имя Имя создаваемого или настраиваемого свойства.

дескриптор Объект дескриптора свойства, описывающий новое свойство или изменения, которые должны быть выполнены в существующем свойстве.

Возвращаемое значение

Объект о.

Исключения

ТуреЕrror
Генерируется, если аргумент о не является объектом или если свойство не может быть создано (из-за того, что объект о является нерасширяемым) или настроено (например,
из-за того, что уже существующее свойство является ненастраиваемым). Перечень ошибок, которые могут вызвать исключение
ТуреЕrror
, приводится в разделе 6.7.

Описание

Функция

Object.defineProperty
создает или настраивает свойство с именем имя в объекте о, используя описание свойства в аргументе дескриптор. Дополнительные сведения об объектах дескрипторов свойств приводятся в справочной статье Object.getOwnPropertyDescriptor.

Если объект о еще не имеет свойства с именем имя, эта функция просто создаст новое свойство с атрибутами и значением, указанными в дескрипторе. Если в дескрипторе не указаны какие-либо атрибуты, соответствующие им атрибуты получат значение false или undefined.

Если значение аргумента имя совпадает с именем существующего свойства объекта о, то функция

Object.defineProperty
настроит это свойство, изменив его значение или атрибуты. В этом случае в дескрипторе достаточно указать только атрибуты, которые должны быть изменены: атрибуты, отсутствующие в дескрипторе, сохранят свои прежние значения.

Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.

Пример

function constant(o, n, v) { // Определить константу о.n со значением v

Object.defineProperty(o, n, { value: v, writable: false

enumerable: true, configurable:false});

}

См. также

Object.create, Object.defineProperties, Object.getOwnPropertyDescriptor, раздел 6.7

Object.freeze (ECMAScript 5)

делает объект неизменяемым

Синтаксис

Object.freeze(o)

Аргументы

о Объект, который должен быть зафиксирован.

Возвращаемое значение

Зафиксированный объект о.

Описание

Функция

Object.freeze
делает объект о нерасширяемым (
Object.preventExtensions
), а все его собственные свойства - ненастраиваемыми, подобно функции
Object.seal.
Однако в дополнение к этому она делает все неунаследованные свойства доступными только для чтения. Это означает, что в объект о нельзя будет добавлять новые свойства,
а существующие свойства-данные нельзя будет изменить или удалить. Действие функции
Object.freeze
является необратимым, т.е. зафиксированный объект нельзя снова сделать доступным для изменения.

Имейте в виду, что функция

Object.freeze
устанавливает атрибут writable, имеющийся только в свойствах-данных. Она не действует на свойства, имеющие методы записи. Отметьте также, что функция
Object.freeze
не действует на унаследованные свойства. Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.

См. также

Object.defineProperty, Object.isFrozen, Object.preventExtensions, Object.seal, раздел 6.8.3

Object.getOwnPropertyDescriptor (ECMAScript 5)

возвращает атрибуты свойства

Синтаксис

Object.getOwnPropertyDescriptor(o, имя)

Аргументы

о Объект, которому принадлежит искомое свойство.

имя Имя свойства (или индекс элемента массива), атрибуты которого требуется получить.

Возвращаемое значение

Объект дескриптора для указанного свойства заданного объекта или undefined, если такое свойство не существует.

Описание

Функция

Object.getOwnPropertyDescriptor
возвращает дескриптор для указанного свойства заданного объекта. Дескриптор свойства - это объект, описывающий атрибуты и значение свойства. Более полная информация приводится в следующем подразделе. Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.

Дескрипторы свойств

Дескриптор свойства - это обычный JavaScript-объект, описывающий атрибуты (и иногда значение) свойства. В языке JavaScript существует два типа свойств. Свойства-данные, имеющие значение и три атрибута:

enumerable, writable
и
configurable
. Свойства с методами доступа, имеющие метод чтения и/или метод записи, а также атрибуты
enumerable
и
configurable
.

Дескриптор свойства с данными имеет следующий вид:

{

value: /* любое значение, допустимое в языке JavaScript */,

writable: /* true или false */,

enumerable: /* true или false */,

configurable: /* true или false */

}

Дескриптор свойства с методами доступа имеет следующий вид:

Поделиться:
Популярные книги

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

И в аду есть герои

Панов Вадим Юрьевич
5. Тайный Город
Фантастика:
боевая фантастика
9.19
рейтинг книги
И в аду есть герои

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Проклятый Лекарь. Том 2

Молотов Виктор
2. Анатомия Тьмы
Фантастика:
фэнтези
попаданцы
7.00
рейтинг книги
Проклятый Лекарь. Том 2

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Железное пламя

Яррос Ребекка
Фантастика:
фэнтези
5.00
рейтинг книги
Железное пламя

Отверженный. Дилогия

Опсокополос Алексис
Отверженный
Фантастика:
фэнтези
7.51
рейтинг книги
Отверженный. Дилогия

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Моров. Том 8

Кощеев Владимир
7. Моров
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Моров. Том 8