Javascript setter - 如何获取 setter 内部的 setter 的名称?
Javascript setter - How to get the name of the setter inside of the setter?
所以我需要得到当我给它赋值时调用的 setter 的名称。像这样:
var b = {};
var a = {
set hey(value) {
b[<name of setter>] = value;
}
}
我希望 setter 的名称为 'hey',因此 b.hey
等于您设置 a.hey
的值。
我已经搜索了几天,但找不到我的问题的答案。非常感谢您的帮助!
您可以检查 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);
所以我需要得到当我给它赋值时调用的 setter 的名称。像这样:
var b = {};
var a = {
set hey(value) {
b[<name of setter>] = value;
}
}
我希望 setter 的名称为 'hey',因此 b.hey
等于您设置 a.hey
的值。
我已经搜索了几天,但找不到我的问题的答案。非常感谢您的帮助!
您可以检查 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);