使用字符串访问变量

2023-12-03

我目前有一个 Javascript 函数,它使用字符串来引用对象名称并访问其属性。我目前正在使用 eval() 来获得所需的效果,我知道这是非常非常错误的。这是我目前如何实现我想要的目标的示例:

var stringToObjectRef = function() {

    var myTestVar = "myTestObject";
    var myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };

    var myValue = eval(myTestVar + '.item1');

    alert(myValue);

}();

我尝试过使用 [myTestVar].item1 之类的东西,但这返回未定义。实现此目的的正确语法是什么?

提前致谢。


如果你说的是item1部分,您正在寻找:

myValue = myTestObject["item1"];

不需要eval。 (几乎从来没有。)

如果您正在谈论获得myTestObject使用“myTestObject”字符串的变量,您想要重构代码,这样您就不会这样做,而不是使用eval。不幸的是,函数内用于符号解析的变量对象无法直接访问。重构可以只显式地使用一个对象:

var stringToObjectRef = function() {

    var objects = {};

    var myTestVar = "myTestObject";
    objects.myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };

    var myValue = objects[myTestVar].item1;

    alert(myValue);

}();

题外话,我不记得确切的原因,但如果你要像这样立即执行该匿名函数,你需要将函数表达式放在括号中:

var x = (function() { return 5; })();

而不是

var x = function() { return 5; }();

同样,我不记得为什么,也不记得是因为流行解释器中的实现错误还是语法的实际要求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用字符串访问变量 的相关文章

  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • 如何测试 javascript 闭包内的函数

    这似乎是不可能的 也可能是 但我正在尝试更多的 TDD 但我总是在闭包方面碰壁 假设我有以下内容 function createSomething init function privateMethod param return init
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构

随机推荐

  • 字典中元素的配对组合,不重复

    在Python中 我有一个像这样的字典 pleio firstLine enf1 54 set enf2 48 free enf3 34 set enf4 12 free secondLine enf5 56 bgb enf6 67 kio
  • int[ ] 中未分配的值

    想知道在 C 中未分配的整数的值是多少int 通常是 Example int arr 5 arr 1 2 arr 3 4 for int i 0 i lt 5 i cout lt
  • 将 UTC 转换为当前区域设置时间

    我正在从 Web 服务下载一些 JSON 数据 在此 JSON 中 我有一些日期 时间值 一切都以 UTC 时间为准 如何解析此日期字符串 以便结果 Date 对象位于当前区域设置中 例如 服务器返回 2011 05 18 16 35 01
  • jQuery UI Datepicker:当今天也被选中时不突出显示

    我正在使用jQuery 日期选择器选择日期 它工作正常 除了我想更改 1 个默认行为 当您选择一天时 所选日期会突出显示 我喜欢 当前日期也被突出显示 但使用不同的 css 样式 我也喜欢 但是 如果您选择当天 则突出显示 因为它是当天 因
  • git push 尝试推送 git ls-files 中未列出的文件

    我不小心在我的仓库中提交了一个不必要的大子文件夹 xxxxx 当我在推送时意识到这一点时 我中途停止了推送 然后我使用以下命令从存储库中删除了不必要的文件夹 xxxxx git rm r cached xxxxx 但同时ls files不显
  • Xamarin Forms 和 Azure Easy Tables 同步问题

    我在 Visual Studio 中使用 Azure 作为后端开发 Xamarin Forms 应用程序已经有一段时间了 我遇到了一个非常奇怪的问题 请注意 我正在遵循本文中提到的方法blog 由于某些奇怪的原因 PullAsync 方法似
  • 测试用户角色,VB.NET中的授权属性

    我正在使用 ASP NET MVC 构建网站 我使用 VB 作为编程语言 我有几个问题 1 我创建了一个角色 经理 如何检查用户是否属于该特定角色 现在我正在使用 If My User IsInRole Manager Then Direc
  • 帮助解决Python UnboundLocalError:赋值前引用的局部变量

    我之前已经发布过类似的问题 但是 我想我可能误解了我的问题 所以我可以在这里发布我的原始代码 并寻找有人可以帮助我 我现在真的陷入了困境 非常感谢 from numpy import import math as M initial con
  • Google Scripts:如何调用一个函数在另一个函数完成后运行

    我有一个谷歌脚本 其中有 4 个不同的函数 需要一个接一个地运行 但一个函数可以在前一个函数完成 完成后运行 每个函数所需的时间各不相同 但平均每个函数大约需要 15 20 分钟 每个函数都会完成一个包含大量数据的电子表格 因此我想在触发器
  • 为什么 dagger graph 在 java 中可以工作,但在 Kotlin 中却说缺少 Provides,而我已经提供了?

    将 dagger 接口从 java 转换为 Kotlin 时遇到一些问题 我得到 Dagger MissingBinding java util Map 如果没有 Provides 注释的方法就无法提供 这是我的界面 interface T
  • 仅单击一个时,RecyclerView 第一项和最后一项发生更改

    我正在使用 recyclerview 来显示可以选择的兴趣列表 单击第一个项目也会选择最后一个项目 选择第一项 最后一项也被选中 选择是通过以下代码完成的 Override public InterestViewHolder onCreat
  • 无法将 AVCaptureDevice 与闪光灯一起使用

    对于我认为应该很简单的事情 我遇到了困难 我只想在 iOS 应用程序中拍照时点亮闪光灯 我所有的尝试都失败了或者只成功了 20 这是点亮闪光灯的代码 Here we have captureDevice hasFlash captureDe
  • 如何在 jfreechart、netbeans 中调整此图表的大小?

    我似乎无法操纵图表本身 我无法改变尺寸chartPanel createChartPanel 不断重写为chartPanel javax swing panel 我尝试创建一个方法modificarGrafico 但什么也没有 例子 htt
  • WSO2 ESB 4.8.1 中支持的 XPath 函数

    WSO2 ESB 4 8 1 似乎不支持以下 XPath 函数 escape html uri iri 到 uri 编码为 uri 有谁知道 WSO2 ESB 4 8 1 支持哪些 XPath 函数以及不支持哪些函数 Answer reco
  • 将图像(覆盖)放置在另一个图像(背景)的 x,y 上

    我需要在运行时动态地将图像放置在另一个图像上 精确地位于背景图像的 x y 位置 我有以下详细信息 叠加图像属性 红色 x 58 y 232 h 266 w 431背景图片 黑色 match parent w 1024 h 768 这里 x
  • 训练后如何获取神经网络参数?

    我正在使用 matlab 的神经网络进行分类 我想知道如何存储网络参数 例如 纪元 时间 MSE等 训练后在矩阵中 多谢 打电话时train 第二个返回的参数是培训记录 其中包含有关训练的纪元 时间和其他信息 例如 net tr train
  • 检查未知对象中的对象是否存在的最有效的Javascript方法[重复]

    这个问题在这里已经有答案了 这是我在 Javascript 中经常遇到的事情 假设我有一个这样的对象 var acquaintances types friends billy 6 jascinta 44 john 91 others Ma
  • 詹金斯下的git克隆/ssh

    我使用 stash 作为 git 存储库管理器 stash 使您能够为每个尝试连接和克隆的用户添加 ssh 密钥 我已经为所有 UNIX 用户配置好了 但 Windows 却给我带来了困难 Windows 从机 2008 R2 服务器 上的
  • 自定义视图矩阵的拉伸问题

    我目前正在为我的项目开发自己的二维数学库 以提高我对底层矩阵数学的理解 过去我使用过 GLM 等库 但我觉得它可能值得研究作为一种学习经验 其中大部分都很简单 我的大多数数学课程都与 OpenGL 集成并运行良好 但是我的视图矩阵似乎在窗口
  • 使用字符串访问变量

    我目前有一个 Javascript 函数 它使用字符串来引用对象名称并访问其属性 我目前正在使用 eval 来获得所需的效果 我知道这是非常非常错误的 这是我目前如何实现我想要的目标的示例 var stringToObjectRef fun