2017-01-27 73 views
0

说我有一个对象:创建基于其他对象的对象

var obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"}; 

我如何创建对象2基于OBJ1,使其具有OBJ1的所有属性,它们都属于其他新的关键:

var obj2 = {parentKey: {var1: 123, var2: 456, var3: "fdsfdsfds"}}; 

键的名称 - var1,var2,var3 - 是未知的,它们可以是任何东西。

回答

1

其实,这是你没有使用编译器像巴别塔或其他,则必须使用以下语法:

var obj2 = {parentKey: Object.assign ({}, obj1)}; 

如果你不想让你的对象是不可变的,你只需要做:

var obj2 = {parentKey: obj1}; 

等待ES2015的标准化,就必须使用编译器将使用此语法:

const obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"}; 
const obj2 = {... obj1}; 
+0

Downvoter:这将很快从ES2018开始(可能)如下:https://github.com/sebmarkbage/ecmascript-rest-spread这个提案已经在第三阶段,得到了transpilers的广泛支持,并广泛用于React。 Hajji:当提倡使用不是标准的功能时,这非常重要。 –

1

如果你真的需要拷贝这个对象,一个简单的方法来做一个头脑简单的拷贝就是新的Object.assign函数(它可以在较老的环境中使用)。

var obj2 = {parentKey: Object.assign({}, obj1)}; 

如果你不介意使用相同对象(不是副本),你可以让新对象的parentKey的价值:

var obj2 = {parentKey: obj1};