JavaScript对象包含一组键/值对。
给出对象,是否可能每个这样的对象对创建一个与其键名相同的变量,并在对象中分配该键的值?
还可以在JavaScript ES5中实现吗?
例如,如果对象是
var obj = {a: 'aaa', b: 'bbb'}
然后,此过程应创建两个变量:
var a = 'aaa';
var b = 'bbb';
答案 0 :(得分:-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问题
答案 1 :(得分:-4)
您可以使用解构
const obj = {a : "aaaa", b : "bbbb"};
//use destructuring
const { a } = obj;
console.log(a);
答案 2 :(得分:-4)
import * as firebase from 'firebase';