首页 > 解决方案 > Javascript setter - 如何在 setter 中获取 setter 的名称?

问题描述

因此,我需要获取在为其赋值时调用的 setter 的名称。像这样:

var b = {};

var a = {
 set hey(value) {
  b[<name of setter>] = value;
 }
}

我希望设置器的名称为“嘿”,因此b.hey等于您设置的值a.hey

我已经搜索了几天,找不到我的问题的答案。帮助将不胜感激!

标签: javascriptsetter

解决方案


您可以检查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);

但是,这将在严格模式下失败 - 如果可能,您可以考虑使用 aProxy而不是 for a

var b = {};
var a = new Proxy({}, { set: (_, prop, val) => {
  b[prop] = val;
}});
a.hey = 'foo';

console.log(b);


推荐阅读