当前位置:首页 > 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 }]

手动实现浅拷贝

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

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实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #34…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…