例如,在此代码中
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
是否可以获取o.a
的setter函数的引用,以便如果引用分配给f
,那么我可以f.call(other, value)
将其用于另一个对象?< / p>
答案 0 :(得分:12)
给出你的示例对象:
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
您可以像这样使用Object.getOwnPropertyDescriptor:
var setter = Object.getOwnPropertyDescriptor(o, "a").set;
var getter = Object.getOwnPropertyDescriptor(o, "a").get;
var other = {};
setter.call(other, 123);
最后一个语句将在对象“other”上设置值123。它不会影响对象“o”的值。
您也可以使用getter从其他人那里获取值。
var result = getter.call(other);
答案 1 :(得分:1)
试试Object.getOwnPropertyDescriptor。它将使用getter和setter方法返回一个对象。