JavaScript Object.getOwnPropertyDescriptor()

The Object.getOwnPropertyDescriptor() method returns a property descriptor for a specific property of an object.

Example

let obj = {num: 10}

// get the property description // of the num property of obj let numValue = Object.getOwnPropertyDescriptor(obj, "num");
console.log(numValue); // Output: { value: 10, writable: true, enumerable: true, configurable: true }

getOwnPropertyDescriptor() Syntax

The syntax of the getOwnPropertyDescriptor() method is:

Object.getOwnPropertyDescriptor(obj, prop)

Here, getOwnPropertyDescriptor() is a static method. Hence, we need to access the method using the class name, Object.


getOwnPropertyDescriptor() Parameters

The getOwnPropertyDescriptor() method takes in:

  • obj - the object in which to look for the property.
  • prop - the name or Symbol of the property whose description is to be retrieved.

getOwnPropertyDescriptor() Return Value

The getOwnPropertyDescriptor() method returns:

  • a property descriptor of the specified property of the object.
  • undefined if the property does not exist in the object.

Example 1: JavaScript Object.getOwnPropertyDescriptor()

let obj = {
  x:  711,
  get number() {
    return this.x;
  },
};

// get property description of x in obj let xDescriptors = Object.getOwnPropertyDescriptor(obj, "x");
console.log(xDescriptors);
// get property description of number() method let value = Object.getOwnPropertyDescriptor(obj, "number");
console.log(value);

Output

{ value: 711, writable: true, enumerable: true, configurable: true }
{
  get: [Function: get number],
  set: undefined,
  enumerable: true,
  configurable: true
}

In this program, we have created an object obj with the following properties:

  • x - a property with the value 711
  • number() - a get method that returns the value of x

Then, we used the getOwnPropertyDescriptor() method to find the property descriptors of x and number():

// find property description of x
let xDescriptors = Object.getOwnPropertyDescriptor(obj, "x");

// find property description of number() method
let value = Object.getOwnPropertyDescriptor(obj, "number");

Notice the arguments given to the getOwnPropertyDescriptor() method. The object name obj is written without quotation marks.

However, the property names x and number are written inside double quotes i.e. "x" and "number".


Example 2: getOwnPropertyDescriptor() With defineProperty()

let obj={}

// define a property of obj using
// the defineProperty() method
Object.defineProperty(obj, "id", {
  value: 123,
  writable: false,
  enumerable: false,
});

// find property description of created property 'id' console.log(Object.getOwnPropertyDescriptor(obj, "id"));

Output

{ value: 123, writable: false, enumerable: false, configurable: false }

In the above example, we have initialized an empty object obj. Then, we defined a single property id on it using the defineProperty() method.

Finally, we printed all the property descriptions of the id property with the help of getOwnPropertyDescriptor().

The resulting output shows that getOwnPropertyDescriptor() returns the same property descriptors that we had defined using defineProperty().


Recommended Reading: