Object.create()
Стандарт ECMAScript 5 определяет метод Object.create()
, который создает новый объект и использует свой первый аргумент в качестве прототипа этого объекта. Дополнительно Object.create()
может принимать второй необязательный аргумент, описывающий свойства нового объекта.
Этот метод очень удобен, так как позволяет вам указывать объект прототип для нового вашего объекта без определения функции конструктора.
Object.create()
является статической функцией, а не методом, вызываемым относительно некоторого конкретного объекта. Чтобы вызвать эту функцию, достаточно передать ей желаемый объект-прототип:
var o1 = Object.create({x:1, y:2}); // o1 наследует свойства x и y
Чтобы создать объект, не имеющий прототипа, можно передать значение null
, но в этом случае вновь созданный объект не унаследует ни каких-либо свойств, ни базовых методов, таких как toString()
(а это означает, что этот объект нельзя будет использовать в выражениях с оператором +
):
var o2 = Object.create(null); // o2 не наследует ни свойств, ни методов
Если в программе потребуется создать обычный пустой объект (который, например, возвращается литералом {}
или выражением new Object()
), передайте в первом аргументе Object.prototype:
var o3 = Object.create(Object.prototype); // o3 подобен объекту, созданному
// с помощью {} или new Object().