[英]ES6 class setter as a function
我正在嘗試將類的setter函數作為參數提交。
假設有:
class A {
set foo(foo) {
this._foo = foo
}
}
但是,如果我要調用function f(setter) { setter(); }
function f(setter) { setter(); }
像這樣的f(obj.foo)
,當然obj.foo
的值將通過調用getter來提交。
我在考慮使用箭頭函數(foo) => obj.foo = foo
,它可以工作。 但是必須有一種更短的方法,例如f(obj.setFoo)
來獲取setter函數。
歡迎提出想法。
但是必須有一種更短的方法,例如f(obj.setFoo)來獲取setter函數。
不。 還有更長的路要走,
var setFoo = Object.getOwnPropertyDescriptor(obj, 'foo').set;
setFoo.call(obj, 'bar');
訪問器函數存儲在內部屬性屬性中 ,並且不使用反射就無法訪問。 堅持使用箭頭函數解決方案,或在類上定義getter / setter函數(而不是accessor屬性)。
您始終可以定義一個返回setter的getter:
class A { get foo() { return Object.getOwnPropertyDescriptor(A.prototype, 'foo').set; } set foo(foo) { this._foo = foo; } } var obj = new A(); (function(setter) { setter.call(obj, 123); console.log(obj._foo); // 123 })(obj.foo);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.