我试图将类的setter函数作为参数提交。
让我们知道:
class A {
set foo(foo) {
this._foo = foo
}
}
但是,如果我正在调用function f(setter) { setter(); }
这样的f(obj.foo)
,那么obj.foo
的价值当然会以调用getter的方式提交。
我正在考虑使用箭头函数(foo) => obj.foo = foo
并且它有效。但必须有一个更短的方法,例如f(obj.setFoo)
来获得setter函数。
欢迎提出意见。
答案 0 :(得分:1)
但必须有一个较短的方法,比如f(obj.setFoo)来获取setter函数。
不。还有更长的路要走,
Warning: simplexml_load_file(): http://example.com/RssNAV.aspx?swise=y&mf=43%0D%0A:4: parser error : Extra content at the end of the document in C:\xampp\htdocs\v\xml\fetch_xml_data.php on line 21
Warning: simplexml_load_file(): <body> in C:\xampp\htdocs\v\xml\fetch_xml_data.php on line 21
存取器功能存储在internal property attributes中,不使用反射就无法访问。坚持使用箭头功能解决方案或在类上定义getter / setter函数(而不是访问器属性)。
答案 1 :(得分:1)
您始终可以定义一个返回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);