javascript - Javascript setter - 如何在 setter 中获取 setter 的名称?
问题描述
因此,我需要获取在为其赋值时调用的 setter 的名称。像这样:
var b = {};
var a = {
set hey(value) {
b[<name of setter>] = value;
}
}
我希望设置器的名称为“嘿”,因此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);
但是,这将在严格模式下失败 - 如果可能,您可以考虑使用 aProxy
而不是 for a
:
var b = {};
var a = new Proxy({}, { set: (_, prop, val) => {
b[prop] = val;
}});
a.hey = 'foo';
console.log(b);
推荐阅读
- javascript - 无法在本地主机中显示数据库中的用户
- javascript - 无法访问不断变化的变量(Johnny-Five 操纵杆)
- asp.net-mvc - asp .net mvc postdata 在控制器中始终为 0
- java - Spring Boot (STS) 中无法识别 ConstraintCollectors
- database - 谁应该更新 EF Core 中的并发令牌?
- ffmpeg - 使用 ffmpeg 剪切视频时出现空流
- django - 如何在 Graphene Django 中记录有关 GraphQL 请求的信息?
- javascript - 使用循环突出显示表中的当前半小时
- python - 是否可以制作一个通过完全自包含的子进程调用 python 脚本的 PyQt5 应用程序?
- r - 在 Xpath 中同时转义双引号和单引号