javascript - 在不使用 eval() 的情况下访问串联的属性名称

标签 javascript jquery performance

我想弄清楚如何在 for 循环中连接一个对象; eval() 工作正常,但我想要最佳效率,而且我在 Google 上搜索的大部分内容让我相信 eval() 不是一个安全的选择。我查看了与 eval() 相关的其他示例,但是,似乎没有一个是相同的情况。

我是 Javascript 的初学者,如果有一个简单的解决方案,我深表歉意。

objFunction: function () {
        var concat1;
        var concat2;
        $('table tbody tr').each(function (i) {
            i++;
            for (var x = 1; x <= 4; x++) {                   
                concat1 = 'obj1.obj2.obj3.step' + i + '[' + x + ']' + '.name';
                concat2 = 'obj1.obj2.obj3.step' + i + '[' + x + ']' + '.icon';

                console.log(eval(concat1));
                console.log(eval(concat2));
});
}

谢谢,

最佳答案

那么,您已经在使用 bracket notation member operator .只需将它用于 stepN 即可:

function () {
    $('table tbody tr').each(function (i) {
        i++;
        for (var x = 1; x <= 4; x++) {
            console.log(obj1.obj2.obj3['step'+i][x].name);
            console.log(obj1.obj2.obj3['step'+i][x].icon);
        } // <-- you're missing this brace, btw
    });
}

关于javascript - 在不使用 eval() 的情况下访问串联的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304814/

相关文章:

jquery - 使用jquery检查url参数是否存在

jquery - 将 Div 定位在输入框的右上角

Java:getter 方法与公共(public)实例变量:性能和内存

java - 如何优化 Lz77 滑动窗口压缩机?

用于最佳性能的 Java 集合

javascript - 如何在reactjs中设置状态时使用三元运算

javascript - 从本地路径加载图像并将其绘制在 Canvas 上

javascript - 'exit' 是 JavaScript 中普遍支持的停止执行的方法吗?

javascript - 赫罗库!找不到资源

javascript - 你如何检查 jquery .html() 变量和 ruby​​ on rails 生成的 html 之间的相等性?