当前位置:首页 > JavaScript

js对象展开 实现

2026-03-15 23:18:37JavaScript

对象展开(Spread Operator)的基本用法

对象展开运算符(...)用于将一个对象的可枚举属性拷贝到另一个对象中。这是ES6引入的特性,常用于对象的浅拷贝或合并。

const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
// obj2 = { a: 1, b: 2, c: 3 }

合并多个对象

可以通过连续使用展开运算符合并多个对象。当属性名冲突时,后展开的对象属性会覆盖前面的。

const objA = { x: 1, y: 2 };
const objB = { y: 3, z: 4 };
const merged = { ...objA, ...objB };
// merged = { x: 1, y: 3, z: 4 }

浅拷贝注意事项

展开运算符创建的是浅拷贝,嵌套对象仍保持引用关系。

js对象展开 实现

const original = { a: 1, nested: { b: 2 } };
const copy = { ...original };
copy.nested.b = 3;
// original.nested.b 也会变为3

添加新属性

可以在展开时直接添加新属性,位置决定了优先级(后定义的属性优先级更高)。

const base = { id: 100 };
const extended = { ...base, name: 'Example', id: 101 };
// extended = { id: 101, name: 'Example' }

条件展开

通过结合三元运算符实现条件展开,这在React的props传递中很常见。

js对象展开 实现

const extraProps = shouldInclude ? { flag: true } : {};
const obj = { ...base, ...extraProps };

与数组展开的区别

虽然语法相似,但对象展开只拷贝自身可枚举属性,而数组展开适用于可迭代对象。

const arr = [1, 2, 3];
const obj = { ...arr }; // {0: 1, 1: 2, 2: 3}

浏览器兼容性

对于旧环境需要Babel等工具转译,或使用Object.assign()替代:

// 等效于展开运算符
const merged = Object.assign({}, obj1, obj2);

标签: 对象js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…