因此,我需要获取在为其分配值时被调用的setter的名称。像这样:
var b = {};
var a = {
set hey(value) {
b[<name of setter>] = value;
}
}
我希望设置器的名称为“嘿”,所以b.hey
等于您将a.hey
设置为的值。
我已经搜索了几天,找不到我的问题的答案。帮助将不胜感激!
答案 0 :(得分:1)
您可以选中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);
在严格模式下,这将失败,但是-如果可能,您可以考虑使用Proxy
代替a
:
var b = {};
var a = new Proxy({}, { set: (_, prop, val) => {
b[prop] = val;
}});
a.hey = 'foo';
console.log(b);