JavaScript метод isSealed()
Определение и применение
JavaScript метод isSealed() возвращает логическое значение, которое определяет является ли объект нерасширяемым и с недоступными для настройки свойствами, или нет.
Под нерасширяемым объектом стоит понимать тот объект в котором недоступно добавление в него новых собственных свойств.
Под ненастраиваемыми свойствами стоит понимать те, атрибут configurable которых имеет значение
false, в этом случае удаление такого свойства из содержащего его объекта, а также в дальнейшем изменение
дескриптора этого свойства запрещается. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные
объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств
и атрибутах вы можете получить в описании метода
defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
isSealed | 6 | 12 | 4 | 12 | 5.1 | 18 | 4 | 12 | 5 | 1.0 | 4.4 | 5 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис:
Object.isSealed( obj );
Версия JavaScript
ECMAScript 5.1 (реализовано в JavaScript 1.8.5)Значения параметров
| Параметр | Описание |
|---|---|
| obj | Целевой объект, который проверяется. Обязательное значение. |
Исключения
| Тип исключения | Описание |
|---|---|
TypeError |
Возникает в том случае, если значение параметра, определяющее целевой объект не является объектом. Начиная с версии ECMAScript 6 параметр, который не является объектом будет сначала приведён к объекту. |
Пример использования
isSealed() — пример 1
Измените исходные значения или аргументы метода и нажмите ▶. Сравните результат в консоли.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// инициализируем переменную, содержащую объект
let obj = {
a: 1,
b: 2,
}
// определяем является ли объект нерасширяемым и с недоступными для настройки свойствами
console.log(Object.isSealed(obj)) // false
// запечатываем объект
console.log(Object.seal(obj))
// определяем является ли объект нерасширяемым и с недоступными для настройки свойствами
console.log(Object.isSealed(obj)) // true
В этом примере мы инициализировали переменную, содержащую объект и с помощью метода isSealed() проверяем является ли объект нерасширяемым и с недоступными для настройки свойствами. После этого мы с помощью метода seal() запечатываем объект и снова используем метод isSealed().
В следующем примере мы рассмотрим как сделать объект нерасширяемым и с недоступными для настройки свойствами без использования метода seal().
isSealed() — пример 2
Измените исходные значения или аргументы метода и нажмите ▶. Сравните результат в консоли.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// инициализируем переменную, содержащую объект
let obj = {
a: 1,
}
console.log(Object.isSealed(obj)) // false
// изменяем в объекте свойство данных
console.log(
Object.defineProperty(obj, 'a', {
// устанавливаем, что удаление свойства не допускается, а также не допускается изменение дескриптора этого свойства
configurable: false,
}),
)
console.log(Object.preventExtensions(obj)) // делаем объект нерасширяемым
console.log(Object.isSealed(obj)) // true
В этом примере мы инициализируем переменную, содержащую объект, с помощью метода defineProperty() изменяем в этом объекте свойство данных (устанавливаем, что удаление свойства не допускается, а также не допускается изменение дескриптора этого свойств, и с помощью метода preventExtensions() делаем объект нерасширяемым (недоступно добавление в него новых собственных свойств). После этого с помощью метода isSealed() мы проверяем является ли наш объект нерасширяемым и с недоступными для настройки свойствами.