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