是否可以引用 "setter" 的 setter 函数?

Is it possible to get a reference to the setter function of a "setter"?

例如,在这段代码中

var o = {
  set a(value) {this.b = value},
  get a() {return this.b}
}

是否可以为 o.a 获取对 setter 函数的引用,以便如果将引用分配给 f 那么我可以 f.call(other, value) 使用它在另一个物体上?

尝试Object.getOwnPropertyDescriptor。它将 return 一个具有 getter 和 setter 方法的对象。

鉴于您的示例对象:

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);