Spec-Zone.ru › JavaScript

Object.isSealed()

Baseline Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Object.isSealed() определяет, является ли объект запечатанным.

Попробовать

const object = {
  foo: 42,
};

console.log(Object.isSealed(object));
// Expected output: false

Object.seal(object);

console.log(Object.isSealed(object));
// Expected output: true

Синтаксис

Object.isSealed(obj)

Параметры

obj
Объект, который нужно проверить.

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

Boolean, указывающий, запечатан ли переданный объект.

Описание

Возвращает true, если объект запечатан, иначе false. Объект считается запечатанным, если он не расширяемый и все его свойства являются неотъемлемыми (non-configurable), поэтому они не могут быть удалены (но не обязательно являются неизменяемыми).

Примеры

Использование Object.isSealed

// Objects aren't sealed by default.
const empty = {};
Object.isSealed(empty); // false

// If you make an empty object non-extensible,
// it is vacuously sealed.
Object.preventExtensions(empty);
Object.isSealed(empty); // true

// The same is not true of a non-empty object,
// unless its properties are all non-configurable.
const hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
Object.isSealed(hasProp); // false

// But make them all non-configurable
// and the object becomes sealed.
Object.defineProperty(hasProp, "fee", {
  configurable: false,
});
Object.isSealed(hasProp); // true

// The easiest way to seal an object, of course,
// is Object.seal.
const sealed = {};
Object.seal(sealed);
Object.isSealed(sealed); // true

// A sealed object is, by definition, non-extensible.
Object.isExtensible(sealed); // false

// A sealed object might be frozen,
// but it doesn't have to be.
Object.isFrozen(sealed); // true
// (all properties also non-writable)

const s2 = Object.seal({ p: 3 });
Object.isFrozen(s2); // false
// ('p' is still writable)

const s3 = Object.seal({
  get p() {
    return 0;
  },
});
Object.isFrozen(s3); // true
// (only configurability matters for accessor properties)

Аргумент не является объектом

В ES5, если аргумент этого метода не является объектом (примитивом), это приведет к TypeError. В ES2015, если передан аргумент не-объект, метод вернет true без каких-либо ошибок, поскольку примитивы по определению являются неизменяемыми.

Object.isSealed(1);
// TypeError: 1 is not an object (ES5 code)

Object.isSealed(1);
// true                          (ES2015 code)

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-object.issealed

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
isSealed
6
12
4
12
5.1
18
4
12
5
1.0
4.4
5
1.0.0
1.0
0.10.0

См. также

  • Object.seal()
  • Object.preventExtensions()
  • Object.isExtensible()
  • Object.freeze()
  • Object.isFrozen()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API