JS Object.assign详解

一、基本介绍

Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并且返回目标对象。

Object.assign()方法接受任意数量的参数,第一个参数是目标对象,后面的参数是源对象。如果有多个源对象,后面的对象属性将覆盖前面的对象属性。

语法:

Object.assign(target, ...sources)

返回值:目标对象

二、使用场景

Object.assign()方法常用于对象的复制、对象属性的合并、对象属性的默认值设置等场景。

三、对象的复制

下面代码演示了如何使用Object.assign()方法进行浅复制对象。

const source = { a: 1, b: 2 };
const target = Object.assign({}, source);
console.log(target); // { a: 1, b: 2 }

在上面的代码中,我们将source对象的所有属性复制到了一个新的空对象中,并将其赋值给了target。这样就完成了浅复制对象的操作。

四、对象属性的合并

Object.assign()方法还可以用来合并多个对象,将多个对象的属性合并到一个新对象中。

const source1 = { a: 1 };
const source2 = { b: 2 };
const source3 = { c: 3 };
const target = Object.assign({}, source1, source2, source3);
console.log(target); // { a: 1, b: 2, c: 3 }

在上面的代码中,我们将3个源对象的属性合并到了一个新对象中,并将其赋值给了target。

五、对象属性的默认值设置

Object.assign()方法常用于为对象设置默认值,如果某个属性已经存在,则使用已有的属性值,如果不存在则使用默认值。

const source = { a: 1, b: 2 };
const defaults = { b: 0, c: 3 };
const target = Object.assign({}, source, defaults);
console.log(target); // { a: 1, b: 2, c: 3 }

在上面的代码中,我们将source和defaults对象的属性合并到了一个新对象中,并将其赋值给了target。如果defaults对象中的属性已经存在于source对象中,则使用source中的属性值;如果不存在,则使用defaults中的默认值。

六、其他使用方式

Object.assign()方法还可以用于数组的合并、字符串的复制、函数参数的默认值设置等场景。

// 对数组进行合并
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = Object.assign([], arr1, arr2);
console.log(arr3); // [1, 2, 3, 4, 5, 6]

// 复制字符串
const str = 'hello';
const copyStr = Object.assign('', str);
console.log(copyStr); // 'hello'

// 函数参数默认值
function func(options) {
  const settings = Object.assign({}, {
    name: 'Default',
    age: 18
  }, options);
  console.log(settings);
}
func({ name: 'Tom' }); // { name: 'Tom', age: 18 }

七、注意事项

Object.assign()方法进行复制和合并时,涉及到的属性值都是浅复制的。也就是说,如果源对象的属性值是一个引用类型的值(如数组、对象等),则目标对象中的属性值仅仅是该引用类型值的引用,并不是该引用类型的深拷贝。

const source = { a: [1, 2, 3] };
const target = Object.assign({}, source);
console.log(target); // { a: [1, 2, 3] }
source.a.push(4);
console.log(target); // { a: [1, 2, 3, 4] }

在上面的代码中,我们将source对象的属性复制到了target对象中。然后改变了source.a属性值的内容,发现target对象中的a属性值也发生了改变,因为source和target对象中的a属性值其实是同一个数组的引用。

八、总结

Object.assign()方法是一个十分常用的JavaScript方法,可以实现对象的复制、属性的合并和默认值的设置等场景。使用Object.assign()方法需要注意属性值的浅复制问题。

原创文章,作者:ZITG,如若转载,请注明出处:https://www.506064.com/n/138769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZITGZITG
上一篇 2024-10-04 00:21
下一篇 2024-10-04 00:21

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • t3.js:一个全能的JavaScript动态文本替换工具

    t3.js是一个非常流行的JavaScript动态文本替换工具,它是一个轻量级库,能够很容易地实现文本内容的递增、递减、替换、切换以及其他各种操作。在本文中,我们将从多个方面探讨t…

    编程 2025-04-28
  • JS图片沿着SVG路径移动实现方法

    本文将为大家详细介绍如何使用JS实现图片沿着SVG路径移动的效果,包括路径制作、路径效果、以及实现代码等内容。 一、路径制作 路径的制作,我们需要使用到SVG,SVG是可缩放矢量图…

    编程 2025-04-27
  • 如何使用JS调用Python脚本

    本文将详细介绍通过JS调用Python脚本的方法,包括使用Node.js、Python shell、child_process等三种方法,以及在Web应用中的应用。 一、使用Nod…

    编程 2025-04-27
  • 如何反混淆美团slider.js

    本文将从多个方面详细阐述如何反混淆美团slider.js。在开始之前,需要明确的是,混淆是一种保护JavaScript代码的方法,其目的是使代码难以理解和修改。因此,在进行反混淆操…

    编程 2025-04-27
  • Python要学JS吗?

    Python和JavaScript都是非常受欢迎的编程语言。然而,你可能会问,既然我已经学了Python,是不是也需要学一下JS呢?在本文中,我们将围绕这个问题进行讨论,并从多个角…

    编程 2025-04-27
  • 解决js ajax post 419问题

    对于使用ajax post请求时出现的419问题,我们需要进行以下几个方面的阐述,包括返回码的含义、可能出现的情况、解决方案等内容。 一、解析419返回码 419返回码表示用户超时…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25

发表回复

登录后才能评论