簡體   English   中英

ES6類設置器功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM