You can do that with an accessor property with a getter function:
let obj = {
prop1: 21,
get prop2() {
return this.prop1 * 2;
}
};
console.log(obj.prop1); // 21
console.log(obj.prop2); // 42
If you like, you can also define a setter for it:
let obj = {
prop1: 21,
get prop2() {
return this.prop1 * 2;
},
set prop2(value) {
this.prop1 = value / 2;
}
};
console.log(obj.prop1); // 21
console.log(obj.prop2); // 42
obj.prop2 = 8;
console.log(obj.prop1); // 4
console.log(obj.prop2); // 8
More on MDN: get
, set
.
Finally, you can do it in class definitions, too:
class Example {
constructor(prop1) {
this.prop1 = prop1;
}
get prop2() {
return this.prop1 * 2;
}
set prop2(value) {
this.prop1 = value / 2;
}
}