ES6 class setter 作为函数
ES6 class setter as a function
我正在尝试提交 class 的 setter 函数作为参数。
假设有:
class A {
set foo(foo) {
this._foo = foo
}
}
但是,如果我像这样调用 function f(setter) { setter(); }
f(obj.foo)
,当然会调用 getter.[=18 提交 obj.foo
的值=]
我正在考虑使用箭头函数 (foo) => obj.foo = foo
,它确实有效。但是必须有一个更短的方法,比如 f(obj.setFoo)
来获得 setter 函数。
欢迎提出想法。
But there must be a shorter way, something like f(obj.setFoo) to get the setter function.
没有。还有更长的路,
var setFoo = Object.getOwnPropertyDescriptor(obj, 'foo').set;
setFoo.call(obj, 'bar');
访问函数存储在 internal property attributes 中,不使用反射无法访问。坚持使用箭头函数解决方案或在 class.
上定义 getter/setter 函数(而不是访问器 属性)
您始终可以定义 getter 其中 returns setter:
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);
我正在尝试提交 class 的 setter 函数作为参数。
假设有:
class A {
set foo(foo) {
this._foo = foo
}
}
但是,如果我像这样调用 function f(setter) { setter(); }
f(obj.foo)
,当然会调用 getter.[=18 提交 obj.foo
的值=]
我正在考虑使用箭头函数 (foo) => obj.foo = foo
,它确实有效。但是必须有一个更短的方法,比如 f(obj.setFoo)
来获得 setter 函数。
欢迎提出想法。
But there must be a shorter way, something like f(obj.setFoo) to get the setter function.
没有。还有更长的路,
var setFoo = Object.getOwnPropertyDescriptor(obj, 'foo').set;
setFoo.call(obj, 'bar');
访问函数存储在 internal property attributes 中,不使用反射无法访问。坚持使用箭头函数解决方案或在 class.
上定义 getter/setter 函数(而不是访问器 属性)您始终可以定义 getter 其中 returns setter:
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);