例如,在這個代碼是否可以獲得對「setter」的setter函數的引用?
var o = {
set a(value) {this.b = value},
get a() {return this.b}
}
是有可能得到爲o.a
該setter函數的引用,因此,如果引用是分配給f
然後我可以做f.call(other, value)
把它用在另一個對象?
例如,在這個代碼是否可以獲得對「setter」的setter函數的引用?
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);
這最後聲明,將價值123對象 「其他」。它不會影響對象「o」的值。
您也可以使用getter獲取其他值。
var result = getter.call(other);
嘗試Object.getOwnPropertyDescriptor。它將使用getter和setter方法返回一個對象。