For example, in this code
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
is it possible to get a reference to that setter function for o.a
so that if the reference is assign to f
then I can do f.call(other, value)
to use it on another object?
For example, in this code
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
is it possible to get a reference to that setter function for o.a
so that if the reference is assign to f
then I can do f.call(other, value)
to use it on another object?
2 Answers
Reset to default 19Given your example object:
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
You can use Object.getOwnPropertyDescriptor like this:
var setter = Object.getOwnPropertyDescriptor(o, "a").set;
var getter = Object.getOwnPropertyDescriptor(o, "a").get;
var other = {};
setter.call(other, 123);
That last statement will set the value 123 on object "other". It does not affect the value on the object "o".
You can also get the value from other using the getter.
var result = getter.call(other);
Try Object.getOwnPropertyDescriptor. It will return an object with getter and setter methods.