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

ЖАНРЫ

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

Описание

Свойство

constructor
любого объекта - это ссылка на функцию, являющуюся конструктором этого объекта. Например, если создать массив
а
с помощью конструктора
Array,
то значением свойства
a.constructor
будет
Array
:

а = new Array(1,2,3); // Создать объект

a.constructor == Array //
Равно true

Одно из распространенных применений свойства

constructor
состоит в определении типа неизвестных объектов. Оператор
typeof
позволяет определить, является ли неизвестный объект элементарным значением или объектом. Если это объект, то посредством свойства
constructor
можно определить тип этого объекта. Например, следующая функция позволяет узнать, является ли данное значение массивом:

function isArray(x) {

return ((typeof x == "object") && (x.constructor == Array));

}

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

Window
, не гарантируется. Реализация по умолчанию метода
Object.toString
представляет другой способ определения типа неизвестного объекта.

См. также

Object. toString

Object.create (ECMAScript 5)

создает объект с указанным прототипом и свойствами

Синтаксис

Object.create(прототип)

Object.create (прототип, дескрипторы)

Аргументы

прототип Прототип создаваемого объекта или null.

дескрипторы Необязательный объект, отображающий имена свойств в их дескрипторы.

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

Вновь созданный объект, наследующий прототип и обладающий свойствами, описываемыми дескрипторами.

Исключения

ТуреЕrror
Генерируется, если прототип не является объектом или значением null или если указанные дескрипторы заставляют метод
Object.definePгорегties
сгенерировать исключение
ТуреЕrror
.

Описание

Функция

Object.create
создает и возвращает новый объект с прототипом, определяемым аргументом прототип. Это означает, что новый объект наследует свойства от прототипа.

Если указан необязательный аргумент дескрипторы, функция

Object.create
добавит в новый объект свойства, как если бы был вызван метод
Object.defineProperties.
То есть вызов функции
Object.create(p,d)
с двумя аргументами эквивалентен вызовам:

Object.defіneProperties(Object.create(p), d);

Дополнительную информацию об аргументе дескрипторы можно найти в справочной статье Object.defineProperties, а описание дескрипторов свойств в справочной статье Object.getOwnPropertyDescriptor.

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

Пример

// Создать объект, который имеет собственные свойства х и у и наследует свойство z

var р = Object.create({z:0}, {

x: { value: 1, writable: false, enumerable:true, configurable: true},

y: { value: 2, writable: false, enumerable:true, configurable: true},

});

См. также

Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptor, разделы 6.1, 6.7

Object.defineProperties (ECMAScript5)

создает или настраивает свойства объекта

Синтаксис

Object.defineProperties(o, дескрипторы)

Arguments

о Объект, в котором будут создаваться или настраиваться свойства.

дескрипторы Объект, отображающий имена свойств в их дескрипторы.

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

Объект о.

Исключения

ТуреЕrror
Генерируется, если аргумент о не является объектом или если какое-либо из указанных свойств не может быть создано или настроено. Эта функция не является атомарной: она может создать или настроить часть свойств и затем возбудить исключение, не создав или не настроив другие свойства. Перечень ошибок, которые могут вызвать исключение
ТуреЕrror
, приводится в разделе 6.7.

Описание

Функция

Object.defineProperties
создает или настраивает свойства объекта о, указанные и описанные в аргументе дескрипторы. Имена свойств объекта дескрипторы являются именами свойств, которые будут созданы или настроены в объекте о, а значениями этих свойств являются объекты дескрипторов свойств, которые определяют атрибуты создаваемых или настраиваемых свойств.

Функция

Object.defineProperties
действует подобно функции
Object.defineProperty;
дополнительные подробности смотрите в описании этой функции. Дополнительные сведения об объектах дескрипторов свойств приводятся в справочной статье
Object. getOwnPropertyDescriptor.

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