JavaScript. Подробное руководство, 6-е издание, стр. 440
Пример
<b>var р = {}; // Обычный объект</b><b>Object.getPrototypeOf(р) // => Object.prototype</b><b>var о = Object.create(p) // Объект, наследующий объект р</b><b>Object.getPrototypeOf(о) // => р</b>См. также
Object.create(); глава 6
проверяет, является ли свойство унаследованным
Синтаксис
<b>объект.hasOwnPropertу(имя_свойства)</b>Аргументы
имя_свойства
Строка, содержащая имя свойства объекта.
Возвращаемое значение
Возвращает true, если объект имеет неунаследованное свойство с именем, заданным в имени_свойства. Возвращает false, если объект не имеет свойства с указанным именем или если он наследует это свойство от своего объекта-прототипа.
Описание
В главе 9 говорится, что JavaScript-объекты могут иметь собственные свойства, а также наследовать свойства от своих объектов-прототипов. Метод
<b>hasOwnProperty()</b>Пример
<b>var о = new Object(); </b><div class="fb2-code"><code><b>// Создать объект</b></code></div><b>о.х = 3.14; </b><div class="fb2-code"><code><b>// Определить неунаследованное свойство</b></code></div><b>о.hasOwnProperty("x"); </b><div class="fb2-code"><code><b>// Вернет true: х - это локальное свойство о</b></code></div><b>о.hasOwnProperty("y");</b><div class="fb2-code"><code><b> // Вернет false: о не имеет свойства у &quot;);</b></code></div><b>о.hasOwnProperty("toString")</b><div class="fb2-code"><code><b> // Вернет false: свойство toString унаследовано</b></code></div>См. также
Function.prototype, Object.propertyIsEnumerable(); глава 9
возможно ли добавить в объект новое свойство?
Синтаксис
<b>Object.isExtensible(o)</b>Аргументы
о Объект, проверяемый на возможность расширения
Возвращаемое значение
true, если в объект можно расширить новыми свойствами, и false - если нет.
Описание
Если в объект можно добавлять новые свойства, он является расширяемым. Все объекты сразу после создания являются расширяемыми и остаются таковыми, пока не будут переданы функции
<b>Object.preventExtensions(), Object.seal()</b><b>Object.freeze().</b>Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.
Пример
<b>var о = {}; // Создать новый объект</b><b>Object.isExtensible(o) // => true: он является расширяемым</b><b>Object.preventExtensions(o); // Сделать нерасширяемым</b><b>Object.isExtensible(o) // => false: теперь он нерасширяемый</b>См. также
Object.isFrozen(), Object.isSealed(), Object.preventExtensions(), раздел 6.8.3
объект является неизменяемым?
Синтаксис
<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
проверяет, является ли один объект прототипом другого объекта
Синтаксис
<b>объект.isPrototypeOf(о)</b>Аргументы
о Любой объект.
Возвращаемое значение
Возвращает true, если объект является прототипом объекта о. Возвращает false, если о не является объектом или если данный объект не является прототипом объекта о.
Описание
Как объяснялось в главе 9, объекты в языке JavaScript наследуют свойства от своих объектов-прототипов. К прототипу объекта можно обращаться с помощью свойства prototype функции-конструктора, которая использовалась для создания и инициализации объекта. Метод
<b>isPrototypeOf()</b>