繁体   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