博客
关于我
Object.assign用法
阅读量:795 次
发布时间:2023-02-17

本文共 1667 字,大约阅读时间需要 5 分钟。

Object.assign()方法:对象合并与赋值详解

什么是Object.assign()?

作为ECMAScript标准的一部分,Object.assign() 是一个强大的工具,用于将可枚举属性从一个或多个源对象复制到目标对象。它返回目标对象,允许我们轻松实现对象属性的合并和赋值。

Object.assign()的使用方法

Object.assign() 的调用方式如下:

Object.assign(target, ...sources)
  • target:目标对象,属性会被源对象的属性覆盖。
  • sources:多个源对象,属性会被逐一合并到目标对象中。
  • 返回值:目标对象,即被修改的对象。

Object.assign()的示例

示例1:合并不同对象

var target = {name: 'guxin', age: 25};var source = {state: 'single'};var result = Object.assign(target, source);console.log(target, target === result); // {name: 'guxin', age: 25, state: 'single'}, true

示例2:使用空对象作为目标

var result = Object.assign({}, target, source);

示例3:处理重名属性

var target = {name: 'guxin', age: 18};var source = {state: 'single', age: 22};var result = Object.assign(target, source);console.log(target); // {name: 'guxin', age: 22}

示例4:多个源对象

var target = {name: 'guxin', age: 18};var source1 = {state: 'single', age: 22};var source2 = {mood: 'happy', age: 25};var result = Object.assign(target, source1, source2);console.log(target); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}

注意事项

  • 可枚举属性:Object.assign() 只会复制源对象的可枚举属性,不能拷贝继承属性或不可枚举属性。
  • 深拷贝需求:如果源对象的属性是对象引用,需要自行实现深拷贝。
  • 目标对象改变:使用Object.assign() 会修改目标对象的属性,需谨慎使用。
  • 异常处理:一旦检测到错误,后续拷贝任务会停止。
  • Object.assign()与$.extend()的区别

    通过示例对比:

    var target = {name: 'guxin', age: 18};var source1 = {state: 'single', age: 22};var source2 = {mood: 'happy', age: 25};var resultAssign = Object.assign(target, source1, source2);console.log(resultAssign); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}var resultExtend = $.extend(target, source1, source2);console.log(resultExtend); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}

    两者功能相似,但在实现上有细微差异,主要体现在异常处理和性能上。

    转载地址:http://tynfk.baihongyu.com/

    你可能感兴趣的文章
    nodejs系列之Koa2
    查看>>
    Nodejs连接mysql
    查看>>
    nodejs连接mysql
    查看>>
    NodeJs连接Oracle数据库
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    Nodemon 深入解析与使用
    查看>>
    node不是内部命令时配置node环境变量
    查看>>
    node中fs模块之文件操作
    查看>>
    Node中同步与异步的方式读取文件
    查看>>
    Node中的Http模块和Url模块的使用
    查看>>
    Node中自启动工具supervisor的使用
    查看>>
    Node入门之创建第一个HelloNode
    查看>>
    node全局对象 文件系统
    查看>>
    Node出错导致运行崩溃的解决方案
    查看>>
    Node响应中文时解决乱码问题
    查看>>
    node基础(二)_模块以及处理乱码问题
    查看>>
    node安装及配置之windows版
    查看>>
    Node实现小爬虫
    查看>>
    Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
    查看>>
    Node提示:npm does not support Node.js v12.16.3
    查看>>