是否可以获得对“”的setter函数的引用;setter”;

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

本文关键字:setter 引用 函数 是否      更新时间:2023-09-26

例如,在这个代码中,

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

是否可以获得对o.a的setter函数的引用,以便如果该引用被分配给f,那么我可以执行f.call(other, value)在另一个对象上使用它?

给定您的示例对象:

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

Try Object.getOwnPropertyDescriptor。它将返回一个带有getter和setter方法的对象。