javascript - 作为函数的 ES6 类 setter

标签 javascript ecmascript-6 setter

我正在尝试将类的 setter 函数作为参数提交。

假设有:

class A { 
    set foo(foo) {
        this._foo = foo
    } 
}

但是,如果我正在调用 函数 f(setter) { setter(); }像这样f(obj.foo),当然obj.foo的值会调用getter提交。

我正在考虑使用箭头函数 (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 中并且在不使用反射的情况下无法访问。坚持使用箭头函数解决方案或在类上定义 getter/setter 函数(而不是访问器属性)。

关于javascript - 作为函数的 ES6 类 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371792/

相关文章:

javascript - addEventListener "click"仅使用 if 语句运行一次

javascript - jQuery ScrollTop()函数动画菜单

javascript - 为什么单击事件后悬停停止工作?

javascript - JSX 中 Prop 的顺序重要吗?

reactjs - 在 Office-ui-Fabric 中的 DetailsLists 组件的同一行添加 EDIT 按钮 - ReactJS

wpf - 如何使 Style.Triggers 触发要应用的不同命名样式

javascript - 如何为正在查看的网站动态更改 css 样式表?

javascript - 将字符串分隔符更改为反引号 : possible impact?

ruby - 是否可以让 class.property = x 返回 x 以外的东西?

在初始化程序中快速复制属性