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

能否在函数内部获取传入对象的原变量名?

能否在函数内部获取传入变量的名称?

结论:直接通过传入的变量值本身无法获取它的变量名。因为在JavaScript中,传递给函数的是变量的值(对象类型传递的是引用地址),变量名只是指向该值的标识符,不会随值一起传递到函数内部。

针对你的场景,提供几个可行的解决方案:

方案1:传递包含名称和元素的对象

调用函数时,把变量名和元素对象打包成一个对象传入,函数就能直接拿到名称:

// 调用函数
verifyElementTextTranslated({ 
  key: 'SAMPLE_ELEMENT', 
  element: SAMPLE_ELEMENT 
});

// 函数定义
function verifyElementTextTranslated(params) {
  const elementName = params.key;
  const element = params.element;
  // 用elementName从JSON文件中提取对应翻译内容
}

方案2:给元素对象添加自定义名称属性

修改你的getter方法,给返回的元素对象附加一个name属性存储变量名:

get SAMPLE_ELEMENT() {
  const elem = $('h2=example');
  elem.name = 'SAMPLE_ELEMENT';
  return elem;
}

// 函数内部直接读取属性
function verifyElementTextTranslated(element) {
  const elementName = element.name;
  // 后续翻译匹配逻辑
}

方案3:建立元素与名称的映射表

先定义一个映射对象,把所有元素选择器和对应的名称关联起来,函数内部通过映射反向查找名称:

// 定义元素映射表
const elementMap = {
  SAMPLE_ELEMENT: $('h2=example'),
  // 可添加其他需要的元素
};

// 函数定义
function verifyElementTextTranslated(element) {
  // 从映射表中找到对应元素的名称
  const elementName = Object.keys(elementMap).find(key => elementMap[key] === element);
  // 用elementName匹配JSON翻译内容
}

// 调用函数
verifyElementTextTranslated(elementMap.SAMPLE_ELEMENT);

你之前尝试的element.toString()返回[object, object],是因为该对象没有自定义toString方法,默认返回对象的类型描述,自然拿不到变量名。

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:55:16