Name

Object.create() — create an object with specified prototype and properties

Availability

ECMAScript 5

Synopsis

Object.create(proto)
Object.create(proto, descriptors)

Arguments

proto

The prototype of the newly-created object, or null.

descriptors

An optional object that maps property names to property descriptors.

Returns

A newly created object that inherits from proto and has the properties described by descriptors.

Throws

TypeError

If proto is not an object or null, or if descriptors is specified and causes Object.defineProperties() to throw a TypeError.

Description

Object.create() creates and returns a new object with proto as its prototype. This means that the new object inherits properties from proto.

If the optional descriptors argument is specified, Object.create() adds properties to the new object as if by calling Object.defineProperties(). That is the two-argument invocation Object.create(p,d) is equivalent to:

Object.defineProperties(Object.create(p), d);

See Object.defineProperties() for more on the descriptors argument, and see Object.getOwnPropertyDescriptor() for an explanation of property descriptor objects.

Note that this is not a method to be invoked on an object: it is a global function and you must pass an object to it.

Example

// Create an object that has own properties x and y and inherits property z
var p = Object.create({z:0}, {
    x: { value: 1, writable: false, enumerable:true, configurable: true},
    y: { value: 2, writable: false, enumerable:true, configurable: true},
});

See Also ...

Get JavaScript: The Definitive Guide, 6th Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.