Object.create in JavaScript

Rupesh Mishra
May 13, 2017 · 4 min read

The Object.create method is one of the methods to create a new object in JavaScript.

Other methods of creating objects in JavaScript are described in my previous article. I recommend reading my previous articles on Understanding Prototypes and Inheritance to get the best out of this article.

Basic syntax:

Object.create(prototype_object, propertiesObject)

Object.create method accepts two arguments as:

  1. prototypeObject: newly created objects prototype object. It has to be an object or null.
  2. propertiesObject: Properties of the new object. This argument is optional

Create an object with Object.create with no prototype

Consider the below example to create a new object in JavaScript

Here, we have created a new object person using Object.create method. As we have passed null for the prototypeObject. person object does not have any prototype object.

Further, we have added name as new property to the person object.

Create object with prototype:

Console output:

In the above example, we have created a prototypeObject with fullName function. We created a person object with prototypeObject as prototype object of the person’s object using Object.create(). Further we added firstName and lastName properties to the person object. Here, we have added firstName and lastName properties after the object creation. It would have been great if we could add these properties while creating the object. To do that, we will use the 2nd argument of Object.create method.

Object.create 2nd argument — propertiesObject

propertiesObject is used to create properties on new object. It acts as a descriptor for the new properties to be defined. Descriptors can be data descriptor or access descriptors.

Data descriptors are

  1. configurable
  2. enumerable
  3. value
  4. writable

Access descriptors are

  1. get
  2. set

In detail, descriptors can be read here

Example:

In the above example we have created a new object person with prototype object as prototypeObject and properties as firstName and lastName.

Properties firstName and lastName have been added using the 2nd parameter of the Object.create().

Inheritance using Object.create()

Read Inheritance in JavaScript before reading the below part.

Here we have copied the prototype of the SuperType to the SubType.prototype using Object.create method. Rest everything is same as the inheritance in JavaScript.


Hacker Noon is how hackers start their afternoons. We’re a part of the @AMI family. We are now accepting submissions and happy to discuss advertising & sponsorship opportunities.

If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories. Until next time, don’t take the realities of the world for granted!

Rupesh Mishra

Written by

Full Stack Developer | Freelance Blogger

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade