9

Can somebody give me a good use case of when to use Object.defineProperty(), Object.prototype.property and Object.property.

3

1 Answer 1

9

Imagine we have a person object with an age property with a value of 20.

The Object.defineProperty() method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.

Object.defineProperty(obj, prop, descriptor)

How is this different than the normal assignment operator?

It gives you more control over creating a property than standard assignment (person.age = 25). On top of setting the value, you can specify whether a property can be deleted or edited among other things outlined in more detail here Object.defineProperty() page.

A few examples

To add an name field to this person that cannot be changed with an assignment operator:

Object.defineProperty(person, "name", {value: "Jim", writable: false})

or to update the age property and make it editable:

Object.defineProperty(person, "age", {value: 25, writable: true}) .

Object.prototype.property and Object.property both refer to accessing a property of an object. This is like accessing the age property of the person object using person.age (you can also use person["age"])

Sign up to request clarification or add additional context in comments.

4 Comments

Neither "Jim" nor 25 are descriptors.
So what's the use case? why not simply person.age = 25?
It gives you more control over creating a property than the standard person.age = 25. On top of setting the value, you can specify whether a property can be deleted or edited among other things.
Yeah, please put that in your answer, that's what the OP wants to know :-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.