JS浅拷贝方法
时间: 2025-03-20 08:13:20 浏览: 25
### JavaScript 中实现浅拷贝的方法
在 JavaScript 中,可以通过多种方式实现浅拷贝。以下是几种常见的方式及其特点:
#### 使用 `Object.assign()` 方法
`Object.assign()` 是一种简单且常用的方式来创建目标对象的浅拷贝[^1]。该方法会将源对象的所有可枚举属性复制到目标对象上。
```javascript
const source = { a: 1, b: { c: 2 } };
const shallowCopy = Object.assign({}, source);
console.log(shallowCopy.a === source.a); // true (基本类型的值被直接复制)
console.log(shallowCopy.b === source.b); // true (引用类型的值仍然指向同一内存地址)
```
#### 利用扩展运算符 (`...`)
扩展运算符也可以用于实现浅拷贝,其行为类似于 `Object.assign()` 的功能。
```javascript
const source = { a: 1, b: { c: 2 } };
const shallowCopy = { ...source };
console.log(shallowCopy.a === source.a); // true
console.log(shallowCopy.b === source.b); // true
```
#### 手动循环赋值
通过手动遍历对象的键并将它们逐一赋值给新对象,可以完成浅拷贝操作。这种方式需要特别注意避免拷贝原型链上的属性和方法[^4]。
```javascript
function shallowCopy(obj) {
const copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = obj[key];
}
}
return copy;
}
const source = { a: 1, b: { c: 2 } };
const copiedObj = shallowCopy(source);
console.log(copiedObj.a === source.a); // true
console.log(copiedObj.b === source.b); // true
```
以上三种方法均属于浅拷贝范畴,即只复制一层结构的内容。对于嵌套的对象或数组,这些方法并不会递归地复制内部的数据结构,而是继续共享相同的引用。
---
阅读全文
相关推荐


















