您是否可以使用变量名来引用对象而不使用eval()

问题描述 投票:0回答:2

所以,

我知道可以在对象上创建动态键。

const foo = 'bar';
const obj = {
    [foo]: 'this is bar',
};

但是可以通过变量值引用对象。例如,如果我们有3个对象:

const obj1 = {}
const obj2 = {}
const obj3 = {}

还有一个保存其名称的数组

const objects = ['obj1', 'obj2', 'obj3'];

我们能否遍历那些名称并引用其对象。这行不通:

objects.forEach(obj => Object.assign(obj, { extended: true }));

但是这会objects.forEach(obj => Object.assign(eval(obj),{扩展:true}));

但是Mozilla的文档状态为“ 永远不要使用eval!”]

javascript javascript-objects eval dynamic-variables
2个回答
1
投票

const obj1 = {id: 1} const obj2 = {id: 2} const obj3 = {id: 3} var objects = ['obj1', 'obj2', 'obj3'].map(element => element = [element]); console.log('objects : ', objects)

0
投票
const objNames = ['obj1', 'obj2', 'obj3' ] let objects = []; for(let i = 0; i < objNames.length; i++){ let tempObj = {}; tempObj[objNames[i]] = {extended:true} objects.push(tempObj); }
© www.soinside.com 2019 - 2024. All rights reserved.