当前位置:首页 > 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实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现自举

js实现自举

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

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…