revision:
The Object.defineProperty() static 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)
Parameters:
obj : required. The object on which to define the property.
prop : required. A string or Symbol specifying the key of the property to be defined or modified.
descriptor : required. The descriptor for the property being defined or modified.
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: false
});
object1.property1 = 77;
// Throws an error in strict mode
console.log(object1.property1);
// Expected output: 42
const person = {
firstName: "John",
lastName: "Doe",
language: "EN"
};
Object.defineProperty(person, "year", {value:"2008"})
document.getElementById("demo").innerHTML = person.year;
const person = {
firstName: "John",
lastName: "Doe",
language: "EN"
};
Object.defineProperty(person, "language", {value:"NO"})
document.getElementById("demo").innerHTML = person.language;
example: creating a property
<div>
<p id="define-1"></p>
<p id="define-2"></p>
</div>
<script>
const person = { name: "John Doe" };
Object.defineProperty(person, "age", {
value: 30,
writable: false,
enumerable: true,
configurable: false,
});
console.log(person.age); // 30
document.getElementById("define-1").innerHTML = "age of person : " + person.age;
person.age = 35;
console.log(person.age); // 30
document.getElementById("define-2").innerHTML = "age of person : " + person.age;
</script>
example: JavaScript Object.defineProperty()
<div>
<p id="define-3"></p>
<p id="define-4"></p>
</div>
<script>
// create an object named user
let user = {};
// define the name property of the user object
Object.defineProperty(user, "name", {
value: "John",
writable: false
});
document.getElementById("define-3").innerHTML = "name of user : " + user.name;
// attempt to change the name property; change will fail silently
user.name = "John Doe";
console.log(user.name)
// Output: John
document.getElementById("define-4").innerHTML = "name of user : " + user.name;
</script>
example: defineProperty() method with Data Descriptors.
<div>
<p id="define-5"></p>
</div>
<script>
let obj = {};
// define object's property with data descriptors
Object.defineProperty(obj, "id", {
value: 711,
writable: true,
enumerable: true,
configurable: true,
});
console.log(obj.id);
// Output: 711
document.getElementById("define-5").innerHTML = "id of object : " + obj.id;
</script>