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