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

如何在for循环中直接访问目标对象属性?无需使用eval

无需eval实现对象属性值获取

当然可以不用eval来搞定这个需求!eval不仅存在安全风险,还容易搅乱作用域逻辑,咱们用更靠谱的方式来实现:

方法1:利用全局对象访问(适用于全局作用域的对象)

如果你的目标对象(比如代码里的one)是定义在全局作用域下的,浏览器环境里可以直接通过window全局对象来按名称获取它,然后再访问对应的属性:

修改后的JS代码如下:

objVar = "one"; 
varID = ["Result1", "Result2"]; 
var one = { Result1: 5, Result2: 100 } 
for (i = 0; i < varID.length; i++) { 
  textID = '#' + varID[i]; 
  document.querySelector(textID).innerHTML = window[objVar][varID[i]]; 
}

这里window[objVar]会直接拿到名为one的对象,再通过[varID[i]]获取对应属性的值,完美替代eval的效果。

方法2:用容器对象管理(更推荐的规范写法)

如果不想把对象暴露在全局作用域里(避免全局变量污染),可以提前把所有需要映射的对象放到一个容器对象中,通过键名来访问:

示例代码:

// 用一个容器统一管理需要访问的对象
const objContainer = {
  one: { Result1: 5, Result2: 100 }
};

objVar = "one"; 
varID = ["Result1", "Result2"]; 

for (i = 0; i < varID.length; i++) { 
  textID = '#' + varID[i]; 
  document.querySelector(textID).innerHTML = objContainer[objVar][varID[i]]; 
}

这种方式更安全,也更符合代码规范,不用担心全局环境里的同名变量干扰你的逻辑。

原HTML代码保持不变即可:

<div id="Result1"></div> 
<div id="Result2"></div>

内容的提问来源于stack exchange,提问作者Dr.PB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:16