说我有一个对象:创建基于其他对象的对象
var obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"};
我如何创建对象2基于OBJ1,使其具有OBJ1的所有属性,它们都属于其他新的关键:
var obj2 = {parentKey: {var1: 123, var2: 456, var3: "fdsfdsfds"}};
键的名称 - var1,var2,var3 - 是未知的,它们可以是任何东西。
说我有一个对象:创建基于其他对象的对象
var obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"};
我如何创建对象2基于OBJ1,使其具有OBJ1的所有属性,它们都属于其他新的关键:
var obj2 = {parentKey: {var1: 123, var2: 456, var3: "fdsfdsfds"}};
键的名称 - var1,var2,var3 - 是未知的,它们可以是任何东西。
其实,这是你没有使用编译器像巴别塔或其他,则必须使用以下语法:
var obj2 = {parentKey: Object.assign ({}, obj1)};
如果你不想让你的对象是不可变的,你只需要做:
var obj2 = {parentKey: obj1};
等待ES2015的标准化,就必须使用编译器将使用此语法:
const obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"};
const obj2 = {... obj1};
如果你真的需要拷贝这个对象,一个简单的方法来做一个头脑简单的拷贝就是新的Object.assign
函数(它可以在较老的环境中使用)。
var obj2 = {parentKey: Object.assign({}, obj1)};
如果你不介意使用相同对象(不是副本),你可以让新对象的parentKey
的价值:
var obj2 = {parentKey: obj1};
Downvoter:这将很快从ES2018开始(可能)如下:https://github.com/sebmarkbage/ecmascript-rest-spread这个提案已经在第三阶段,得到了transpilers的广泛支持,并广泛用于React。 Hajji:当提倡使用不是标准的功能时,这非常重要。 –