为了账号安全,请及时绑定邮箱和手机立即绑定

如何将所有对象字段复制到具有相同名称的变量中?

如何将所有对象字段复制到具有相同名称的变量中?

慕容森 2021-06-11 18:11:47
JavaScript 对象包含一组键/值对。给定对象,是否可以为每个这样的对创建一个与其键同名的变量,并使用该键在对象中分配的值?另外,这在 JavaScript ES5 中可行吗?例如,如果对象是var obj = {a: 'aaa', b: 'bbb'}然后这个过程应该创建两个变量:var a = 'aaa';var b = 'bbb';
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

如果您事先知道密钥,则可以解构(仅限 ES6):


const obj = { foo: 'foo', bar: 'bar' };

const { foo, bar } = obj;

console.log(foo);

console.log(bar);

不推荐,因为全局变量不好,但您可以将对象分配给window,然后将其属性作为独立变量引用。这在 ES5 中使用 polyfill 是可行的:


const obj = { foo: 'foo', bar: 'bar' };

Object.assign(window, obj);

console.log(foo);

console.log(bar);

但是动态变量名通常是一个坏主意。如果可能的话,最好只使用您最初拥有的对象。


更不推荐,但既然它回答了这个问题,你可以eval(但请不要):


(() => {

  const obj = { foo: 'foo', bar: 'bar' };

  for (const [prop, val] of Object.entries(obj)) {

    eval(`var ${prop} = val`);

  }

  console.log(foo);

  console.log(bar);

})();

如果必须的话,上述也可以在 ES5 中完成,但你不应该 - 这是一个 X/Y 问题


查看完整回答
反对 回复 2021-06-24
?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用解构


 const obj = {a : "aaaa", b : "bbbb"};

 

 

 //use destructuring

 

const { a } = obj;


console.log(a);


查看完整回答
反对 回复 2021-06-24
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信