代码示例
const a = {
name: "ygb1",
age: 18
}
const b = {
name: "ygb2",
sex: "男"
}
const c = {...a, ...b}
console.log(c);
这段JavaScript代码的作用是将两个对象a
和b
合并成一个新对象c
,具体解释如下:
1. 定义对象 a
和 b
javascript
const a = { name: "ygb1", age: 18 }; const b = { name: "ygb2", sex: "男" };
-
对象
a
包含两个属性:name
(值为"ygb1"
)和age
(值为18
)。 -
对象
b
包含两个属性:name
(值为"ygb2"
)和sex
(值为"男"
)。
2. 使用展开语法(Spread Operator)合并对象
javascript
const c = { ...a, ...b };
-
...a
会展开对象a
的所有属性({ name: "ygb1", age: 18 }
)。 -
...b
会展开对象b
的所有属性({ name: "ygb2", sex: "男" }
)。 -
合并规则:如果属性名冲突(如
name
),后面的对象(b
)的属性值会覆盖前面的对象(a
)的。
3. 合并结果 c
javascript
console.log(c); // 输出: { name: "ygb2", age: 18, sex: "男" }
-
name
来自b
(覆盖了a
的同名属性)。 -
age
来自a
(b
中没有此属性)。 -
sex
来自b
(a
中没有此属性)。
关键概念:对象展开语法({ ...obj }
)
-
作用:将对象的所有可枚举(enumerable)属性展开到新对象中。
-
合并顺序:后面的对象属性会覆盖前面的同名属性。
-
浅拷贝:展开语法是浅拷贝(嵌套对象会共享引用)。
等价写法(不使用展开语法)
javascript
const c = Object.assign({}, a, b);
-
Object.assign()
的作用与展开语法一致,但展开语法更简洁直观。