ES6类setter作为一个函数

时间:2016-07-14 10:28:12

标签: javascript ecmascript-6 setter

我试图将类的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函数。

欢迎提出意见。

2 个答案:

答案 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);