Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.
См. также
Object.defineProperty, Object.freeze, Object.isExtensible, Object.isFrozen, Object. preventExtensions, Object.seal, раздел 6.8.3
Object.keys (ECMAScript 5)
возвращает имена собственных перечислимых свойств
Синтаксис
Object.keys(o)
Аргументы
о
Объект.
Возвращаемое значение
Массив, содержащий имена всех перечислимых (неунаследованных) свойств объекта о.
Описание
Функция
Object.keys
возвращает массив с именами свойств объекта о. Массив включает только имена свойств, которые являются перечислимыми и определены непосредственно в объекте о: унаследованные свойства не включаются. (Для получения имен неперечислимых свойств можно использовать функцию
Object.getOwnPropertyNames.
) Свойства в массиве следуют в том же порядке, в каком они перечисляются циклом
for/in
.
Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.
Пример
Object.keys({х:1, у:2}) // => [”х", "у"]
См. также
Object.getOwnPropertyNames, разделы 5.5.4, 6.5
Object.preventExtensions (ECMAScript 5)
предотвращает добавление в объект новых свойств
Синтаксис
Object.preventExtensions(o)
Аргументы
о Объект, который должен иметь расширяемый набор атрибутов.
Возвращаемое значение
Объект о с аргументами.
Описание
Функция
Object.preventExtensions
присваивает значение false атрибуту
extensible
объекта о, вследствие чего в него нельзя будет добавлять новые свойства. Действие этой функции необратимо: нерасширяемый объект нельзя вновь сделать расширяемым.
Следует отметить, что
Object.preventExtensions
не воздействует на цепочку прототипов, и нерасширяемый объект все еще можно расширить новыми наследуемыми свойствами.
Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.
См. также
Object.freeze, Object.isExtensible, Object.seal, раздел 6.8.3
Object.propertyIsEnumerable
проверяет, будет ли свойство видимо для цикла
for/in
Синтаксис
объект.propertyIsEnumerable(имя_свойства)
Аргументы
имя_свойства
Строка, содержащая имя свойства объекта.
Возвращаемое значение
Возвращает true, если у объекта есть неунаследованное свойство с именем, указанным в аргументе имя_свойства, и если это свойство «перечислимое», т.е. оно может быть перечислено циклом
for/in
для объекта.
Описание
Инструкция
for/in
выполняет цикл по «перечислимым» свойствам объекта. Однако не все свойства объекта являются перечислимыми: свойства, добавленные в объект программным способом, перечислимы, а предопределенные свойства (например, методы) встроенных объектов обычно неперечислимы. Метод
propertyIsEnumerable
позволяет установить различия между перечислимыми и неперечислимыми свойствами. Однако следует заметить: спецификация ECMAScript утверждает, что
propertyIsEnumerable
не проверяет цепочку прототипов, т.е. этот метод годится только для локальных свойств объекта и не предоставляет способа для проверки перечисляемости унаследованных свойств.
Пример
var о = new Object; // Создать объект
о.х = 3.14; // Определить свойство
о.propertyIsEnumerable(”х"); // true: х - локальное и перечислимое
о.propertyIsEnumerable("у"); // false о не имеет свойства у
Function.prototype, Object.hasOwnProperty; глава 6
Object.seal (ECMAScript 5)
предотвращает добавление и удаление свойств
Синтаксис
Object.seal(o)
Аргументы
о Объект, который должен стать нерасширяемым, с недоступными для настройки свойствами.
Возвращаемое значение
Объект в аргументе о.
Описание
Функция
Object.seal
делает объект о нерасширяемым (
Object.preventExtensions
), а все его собственные свойства - ненастраиваемыми. Это предотвращает добваление новых свойств и удаление существующих. Действие этой функции необратимо: нерасширяемый объект с ненастраиваемыми свойствами нельзя вновь сделать расширяемым объектом.