Is there a way to link the value of one object property to the value of another?
The idea is, that I have something like an excepted interface so I need the propertys.name
and .value
for my obj. In this special case name is easily constructed from value (value is an array and name is array.toString()
)
I could use obj.value.toString()
instead of value but the code needs to use obj.name
to make it work for all cases.
I tried this code, but it does not produce the result I want. How could I achieve the desired behavior?
obj = {value: array, name: this.value.toString()}
Advertisement
Answer
You can use a getter.
var obj = { value: array, get name() { return this.value.toString(); } }; console.log(obj.value.toString() === obj.name); // true
You can even extend this to use a setter if need be.
var obj = { value: array, get name() { return this.value.toString(); }, set name(val) { this.value = val.split(','); // or any other operation you may need } }; obj.name = '1,2,3'; console.log(obj.value); // ['1', '2', '3']