猿问

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

JavaScript 对象包含一组键/值对。


给定对象,是否可以为每个这样的对创建一个与其键同名的变量,并使用该键在对象中分配的值?


另外,这在 JavaScript ES5 中可行吗?


例如,如果对象是


var obj = {a: 'aaa', b: 'bbb'}

然后这个过程应该创建两个变量:


var a = 'aaa';

var b = 'bbb';


慕容森
浏览 128回答 2
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 问题

慕慕森

您可以使用解构 const obj = {a : "aaaa", b : "bbbb"};   //use destructuring const { a } = obj;console.log(a);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答