You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:25:19