如何在JavaScript中获取方法名?及如何从person对象中获取"fname"字符串?
问题1:如何在JavaScript中获取方法名?
- 普通命名函数/方法:直接使用函数的
name属性,这是ES6后支持的标准属性,兼容性良好。
示例:function sayHello() {} console.log(sayHello.name); // 输出 "sayHello" const obj = { greet() {} }; console.log(obj.greet.name); // 输出 "greet" - 匿名函数/箭头函数:匿名函数的
name属性为空字符串,箭头函数会继承外层上下文的name(赋值场景下)。若需提取,可将函数转为字符串后用正则匹配:const anonymousFunc = function() {}; console.log(anonymousFunc.name); // 输出 "" // 正则提取方式 const funcStr = anonymousFunc.toString(); const funcName = funcStr.match(/^function\s*([^\s(]+)/)?.[1] || '匿名函数'; console.log(funcName); // 空字符串,具名函数表达式可提取对应名称
问题2:如何从给定person对象中获取字符串形式的"fname"?
给定对象:
var person = { names :{ fname:'felix',lname:'peli'}, age:'52' };
可行方法如下:
- 直接获取嵌套对象的键:
fname是person.names的属性,用Object.keys()获取该对象的所有键,再取对应项:// 获取names下的所有键,第一个即为"fname" const fnameKey = Object.keys(person.names)[0]; console.log(fnameKey); // 输出 "fname" - 遍历嵌套对象查找:若不确定键的位置,可通过遍历匹配对应值的键(比如已知值为'felix'):
let targetKey = ''; for (const key in person.names) { if (person.names[key] === 'felix') { targetKey = key; break; } } console.log(targetKey); // 输出 "fname"
内容的提问来源于stack exchange,提问作者Mac-Anthony
相关产品推荐
相关产品推荐

