2017-01-27 74 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};