javascript - 我可以将变量设置为对象的多部分属性吗?

标签 javascript variables object

我希望能够设置一个带有变量的对象属性,这种方式让我有时将变量设为多部分,有时设为单部分。下面的代码不起作用,但我认为它说明了我要完成的任务。

var mekBldr = {
  mecha: {
    rightLimbs: {
        legs: {
            rightleg01: {
                cost: 0,
                classification: ''
            }
        }
    },
    leftLimbs: {
        legs: {
            leftleg01: {
                cost: 0,
                classification: ''
            }
        }
    }
  }
};

var part1 = 'leftLimbs';

var part2 = 'legs';

var multi = part1[part2];

// the goal: mekBldr.mecha.leftLimbs.legs.leftleg01.cost = 5;

mekBldr.mecha[multi].leftleg01.cost = 5;

最佳答案

这个怎么样。

Object.prototype.select = function(route) {
    var newObj = this;

    route.forEach(function(key) {
        newObj = newObj[key];
    });

    return newObj;
};

你可以像这样使用上面的方法。

var mekBldr = {
    mecha: {
        rightLimbs: {
            legs: {
                rightleg01: {
                    cost: 0,
                    classification: ''
                }
            }
        },
        leftLimbs: {
            legs: {
                leftleg01: {
                    cost: 0,
                    classification: ''
                }
            }
        }
    }
};

var part1 = 'leftLimbs';
var part2 = 'legs';

var multi = [part1, part2];

mekBldr.mecha.select(multi).leftleg01.cost = 5;

关于javascript - 我可以将变量设置为对象的多部分属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132691/

相关文章:

javascript - 根据值改变颜色

javascript - 无法使用动态键访问 process.env 值

java - 使用 beanshell 更新 Jmeter 变量

variables - LESS:将带有变量的规则集(或 mixin)传递给另一个 mixin 并能够使用这些变量

java - 设置接口(interface)问题和对象

javascript - 在 JavaScript 中使用 .filter 评估传递的值

javascript - Sinon stub 函数内的函数

javascript - 事件发生后更新 html 上的 javascript 变量 - Reactjs

object - 在 DDD 中定义多对多关系

android - 如何在android中将对象值绘制到 ListView 中