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

ЖАНРЫ

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

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

Пример

var о = {}; // Создать новый объект

Object.isExtensible(o) // => true: он является расширяемым

Object.preventExtensions(o); // Сделать нерасширяемым

Object.isExtensible(o) // => false: теперь он нерасширяемый

См.

также

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

Object.isFrOZen (ECMAScript 5)

объект является неизменяемым?

Синтаксис

Object.isFrozen(o)

Аргументы

о Проверяемый объект.

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

true, если объект о является зафиксированным и неизменяемым, и false - если нет.

Описание

Объект считается зафиксированным, если все его неунаследованные свойства (кроме свойств с методами записи) доступны только для чтения и он является нерасширяемым. Объект считается нерасширяемым, если в него нельзя добавить новые (неунаследованные) свойства и из него нельзя удалить имеющиеся (неунаследованные) свойства. Функция

Object.isFrozen
проверяет, является ли ее аргумент зафиксированным объектом или нет. Зафиксированный объект нельзя расфиксировать.

Обычно фиксация объектов выполняется с помощью функции

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

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

См. также

Object.defineProperty, Object.freeze, Object.isExtensible, Object.isSealed, Object. preventExtensions, Object.seal, раздел 6.8.3

Object.isPrototypeOf

проверяет, является ли один объект прототипом другого объекта

Синтаксис

объект.isPrototypeOf(о)

Аргументы

о Любой объект.

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

Возвращает true, если объект является прототипом объекта о. Возвращает false, если о не является объектом или если данный объект не является прототипом объекта о.

Описание

Как объяснялось в главе 9, объекты в языке JavaScript наследуют свойства от своих объектов-прототипов. К прототипу объекта можно обращаться с помощью свойства prototype функции-конструктора, которая использовалась для создания и инициализации объекта. Метод

isPrototypeOf
позволяет определить, является ли один объект прототипом другого. Этот прием может применяться для определения класса объекта.

Пример

var
о = new Object: // Создать объект

Object.prototype.isPrototypeOf(о) //true: о - объект

Function.prototype.isPrototypeOf(o.toString); // true: toString - функция

Array.prototype.isPrototypeOf([1,2,3]): // true: [1,2,3] - массив

// Ту же проверку можно выполнить другим способом

(о.constructor == Object): // true: о создан с помощью конструктора

Object (о.toString.constructor == Function): // true: о.toString - функция

// Объекты-прототипы сами имеют прототипы. Следующий вызов вернет true, показывая, что

// объекты-функции наследуют свойства от Function.prototype, а также от Object.prototype.

Object.prototype.isPrototypeOf(Function.prototype):

См. также

Function.prototype, Object.constructor; глава 9

Object.isSealed (ECMAScript 5)

возможно ли добавлять в объект новые и удалять существующие свойства?

Синтаксис

Object.isSealed(o)

Аргументы

о Проверяемый объект.

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

true, если объект о является нерасширяемым, с недоступными для настройки свойствами, и false - если нет.

Описание

Объект считается нерасширяемым, с недоступными для настройки свойствами, если в него нельзя добавить новые (неунаследованные) свойства и нельзя удалить существующие (неунаследованные) свойства. Функция

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

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

См. также

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

Object.keys (ECMAScript 5)

возвращает имена собственных перечислимых свойств

Синтаксис

Поделиться с друзьями: