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

Пример

<b>var р = {}; // Обычный объект</b>

<b>Object.getPrototypeOf(р) // =&gt; Object.prototype</b>

<b>var о = Object.create(p) // Объект, наследующий объект р</b>

<b>Object.getPrototypeOf(о) // =&gt; р</b>

См. также

Object.create(); глава 6

Object.hasOwnProperty()

проверяет, является ли свойство унаследованным

Синтаксис

<b>объект.hasOwnPropertу(имя_свойства)</b>

Аргументы

имя_свойства

Строка, содержащая имя свойства объекта.

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

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

Описание

В главе 9 говорится, что JavaScript-объекты могут иметь собственные свойства, а также наследовать свойства от своих объектов-прототипов. Метод

<b>hasOwnProperty()</b>
предоставляет способ, позволяющий установить различия между унаследованными свойствами и неунаследованными локальными свойствами.

Пример

<b>var о = new Object(); </b><div class="fb2-code"><code>&lt;b&gt;// Создать объект&lt;/b&gt;</code></div>

<b>о.х = 3.14; </b><div class="fb2-code"><code>&lt;b&gt;// Определить неунаследованное свойство&lt;/b&gt;</code></div>

<b>о.hasOwnProperty(&quot;x&quot;); </b><div class="fb2-code"><code>&lt;b&gt;// Вернет true: х - это локальное свойство о&lt;/b&gt;</code></div>

<b>о.hasOwnProperty(&quot;y&quot;);</b><div class="fb2-code"><code>&lt;b&gt; // Вернет false: о не имеет свойства у &amp;quot;);&lt;/b&gt;</code></div>

<b>о.hasOwnProperty(&quot;toString&quot;)</b><div class="fb2-code"><code>&lt;b&gt; // Вернет false: свойство toString унаследовано&lt;/b&gt;</code></div>

См. также

Function.prototype, Object.propertyIsEnumerable(); глава 9

Object.isExtensible() (ECMAScript 5)

возможно ли добавить в объект новое свойство?

Синтаксис

<b>Object.isExtensible(o)</b>

Аргументы

о Объект, проверяемый на возможность расширения

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

true, если в объект можно расширить новыми свойствами, и false - если нет.

Описание

Если в объект можно добавлять новые свойства, он является расширяемым. Все объекты сразу после создания являются расширяемыми и остаются таковыми, пока не будут переданы функции

<b>Object.preventExtensions(), Object.seal()</b>
или
<b>Object.freeze().</b>

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

Пример

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

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

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

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

См. также

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

Object.isFrOZen() (ECMAScript 5)

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

Синтаксис

<b>Object.isFrozen(o)</b>

Аргументы

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

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

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

Описание

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

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

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

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

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

См. также

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

Object.isPrototypeOf()

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

Синтаксис

<b>объект.isPrototypeOf(о)</b>

Аргументы

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

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

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

Описание

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

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