因此,我需要获取setter的名称,当我为其赋值时,将调用该setter。如下所示:
var b = {};
var a = {
set hey(value) {
b[<name of setter>] = value;
}
}我希望setter的名称是‘嘿’,这样b.hey就等于您设置的setter的值。
我已经找了几天了,还是找不到我的问题的答案。如果能帮上忙,我们将不胜感激!
发布于 2019-01-12 17:46:02
您可以检查arguments.callee.name以获取函数名,切下前导set,并将其分配给b的属性
var b = {};
var a = {
set hey(value) {
const name = arguments.callee.name.slice(4);
b[name] = value;
}
}
a.hey = 'foo';
console.log(b);
但是,在严格模式下这将失败-如果可能,您可以考虑为a使用Proxy:
var b = {};
var a = new Proxy({}, { set: (_, prop, val) => {
b[prop] = val;
}});
a.hey = 'foo';
console.log(b);
https://stackoverflow.com/questions/54158354
复制相似问题