Javascript对象如何从函数内部获取密钥
您所调用的函数没有合理的方法来知道引用它的属性的名称是什么。如果你想的话,你需要改变你的结构。一种方法是绑定函数名作为它的第一个参数:
const json = { 'keyone' : function (name) { console.log(name); } , 'keytwo' : function (name) { console.log(name); } }; for (const [key, func] of Object.entries(json)) { json[key] = func.bind(null, key); }
json.keyone(); // 'keyone: json.keytwo(); // 'keytwo'
不改变结构的不合理方法是在现代浏览器上使用arguments.callee.name,因为它在严格模式下无法工作,我也不建议这样做。在现代浏览器中,函数有名称(它们的名称来自分配给它们的属性)。弃用的参数。callee属性给你一个被调用函数的引用,你可以从中得到它的名字: const json = { 'keyone' : function () { console.log(arguments.callee.name); } , 'keytwo' : function () { console.log(arguments.callee.name); } };
json.keyone(); json.keytwo();
但是,我再次强烈建议改变你的结构。callee是不支持的,并且不能在严格模式下工作,而且旧的浏览器(不支持ES2015隐含的函数名)不分配函数名。
回答来源:stackoverflow
赞0
踩0