当前位置:首页 > JavaScript

js实现一个浅拷贝

2026-01-31 10:57:39JavaScript

浅拷贝的实现方法

浅拷贝是指创建一个新对象,该对象复制原始对象的属性值。如果属性是基本类型,拷贝的是值;如果属性是引用类型,拷贝的是内存地址,因此新旧对象会共享同一块内存。以下是几种常见的浅拷贝实现方法。

使用展开运算符(Spread Operator)

展开运算符可以快速实现对象的浅拷贝。

const original = { a: 1, b: { c: 2 } };
const copy = { ...original };
console.log(copy); // { a: 1, b: { c: 2 } }

使用Object.assign()

Object.assign()方法可以将所有可枚举属性从一个或多个源对象复制到目标对象。

const original = { a: 1, b: { c: 2 } };
const copy = Object.assign({}, original);
console.log(copy); // { a: 1, b: { c: 2 } }

使用Array.slice()(针对数组)

对于数组,可以使用slice()方法实现浅拷贝。

const original = [1, 2, { a: 3 }];
const copy = original.slice();
console.log(copy); // [1, 2, { a: 3 }]

使用Array.concat()(针对数组)

concat()方法也可以用于数组的浅拷贝。

const original = [1, 2, { a: 3 }];
const copy = original.concat();
console.log(copy); // [1, 2, { a: 3 }]

手动实现浅拷贝

可以通过遍历对象的属性手动实现浅拷贝。

js实现一个浅拷贝

function shallowCopy(obj) {
    if (typeof obj !== 'object' || obj === null) {
        return obj;
    }
    const copy = Array.isArray(obj) ? [] : {};
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            copy[key] = obj[key];
        }
    }
    return copy;
}

const original = { a: 1, b: { c: 2 } };
const copy = shallowCopy(original);
console.log(copy); // { a: 1, b: { c: 2 } }

注意事项

  • 浅拷贝只复制对象的第一层属性,嵌套对象仍然是引用。
  • 如果原始对象包含引用类型的属性,修改拷贝对象的引用属性会影响原始对象。
const original = { a: 1, b: { c: 2 } };
const copy = { ...original };
copy.b.c = 3;
console.log(original.b.c); // 3

以上方法适用于大多数场景,但需要根据实际需求选择合适的实现方式。

标签: js
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…