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

时间:2015-02-09 03:14:42

标签: javascript getter-setter

例如,在此代码中

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

是否可以获取o.a的setter函数的引用,以便如果引用分配给f,那么我可以f.call(other, value)将其用于另一个对象?< / p>

2 个答案:

答案 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方法返回一个对象。