tru*_*ktr 7 javascript getter-setter
例如,在此代码中
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
Run Code Online (Sandbox Code Playgroud)
是否有可能获得对该setter函数o.a的引用,以便如果引用被赋值,f那么我可以f.call(other, value)在另一个对象上使用它?
bhs*_*cer 13
给出您的示例对象:
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样使用Object.getOwnPropertyDescriptor:
var setter = Object.getOwnPropertyDescriptor(o, "a").set;
var getter = Object.getOwnPropertyDescriptor(o, "a").get;
var other = {};
setter.call(other, 123);
Run Code Online (Sandbox Code Playgroud)
最后一个语句将在对象"other"上设置值123.它不会影响对象"o"的值.
您还可以使用getter从其他人那里获取值.
var result = getter.call(other);
Run Code Online (Sandbox Code Playgroud)