lodash-assign:https://www.lodashjs.com/docs/latest#_assignobject-sources

mdn-assign:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

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

描述:
如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。

注:
1.浅拷贝。
2.改变原对象,返回改变后的对象。

例子:

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };const returnedTarget = Object.assign(target, source);console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }
复制一个对象:
const obj = { a: 1 };
const copy = Object.assign({}, obj);console.log(copy); // { a: 1 }
浅拷贝:
let obj1 = { a: 0 , b: { c: 0}};
let obj2 = Object.assign({}, obj1);
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}} obj1.a = 1;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}} obj2.a = 2;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}obj2.b.c = 3;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}} // Deep Clone
obj1 = { a: 0 , b: { c: 0}};
let obj3 = JSON.parse(JSON.stringify(obj1));
obj1.a = 4;
obj1.b.c = 4;
console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
合并对象
const o1 = { a: 1 };
const o2 = { b: 2 };
const o3 = { c: 3 };const obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。
合并具有相同属性的对象
const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o3 = { c: 3 };const obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }

功能:复制对象,合并对象,对象key重新赋值。

lodash-assign相关推荐

  1. Lodash学习笔记

    Lodash Lodash是一套工具库,它内部封装了诸多对字符串.数组.对象等常见数据类型的处理函数,其中部分是目前ECMAScript尚未制订的规范,但同时被业界所认可的辅助函数. 常用 assig ...

  2. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  3. React入门教程第三课--gulp编译优化

    上节课中我提到了,在gulpfile中编写task编译js和sass的task. 然后在项目中使用时发现,当项目内容越写越多时,编译速度会越来越久. 看了一下编译过程.上次gulpfile中的定义是当 ...

  4. VUE使用docxtemplater导出word(带图片)

    一.docxtemplater docxtemplater 是一种邮件合并工具,以编程方式使用并处理条件.循环,并且可以扩展以插入任何内容(表格.html.图像). npm 是安装 docxtempl ...

  5. signature=b5d482f98802c3bc661cc82639edaa27,Taro

    ({ + url: api.getReplies({ + 'topic_id': id + }) + }), + Taro.request({ + url: api.getTopics({ + id ...

  6. npm 安装node-sass失败

    npm 安装node-sass失败 0 info it worked if it ends with ok 1 verbose cli [ 'C:\Program Files\nodejs\node. ...

  7. vue 中哪些操作自动触发更新视图

    vue 中哪些操作自动触发更新视图 vue数组对象修改触发视图更新 直接修改数组元素是无法触发视图更新的,如 this.array[0] = {name: 'meng',age: 22 } 修改arr ...

  8. 使用docxtemplater模板语法,导出多个word文件,并生成zip压缩包

    文章目录 前言: 一.插件准备: 二.创建一个 download-zip.ts 文件,内容为: 三.页面使用: 四.word模板: 五.结果如下: 六.基本语法: 前言: 1.前端使用的是vue.el ...

  9. vue+docxtemplater,填充word模板

    安装依赖 yarn add docxtemplateryarn add pizzipyarn add jszip-utilsyarn add file-saver// 模板解析插件(支持list循环直 ...

  10. jquery合并两个对象

    1. object.assign Object.assign(target,source,souce...) 2. $.extend $.extend( target [, object1 ] [, ...

最新文章

  1. R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集
  2. Qt中的TCP客户端编程
  3. boost::gil::threshold_adaptive用法的测试程序
  4. Elasticsearch启动问题:max number of threads [3753] for user [XX] is too low, increase to at least [4096]
  5. python删除字符串中的字母_在Python中删除字符串中的大写字母
  6. [渝粤教育] 新乡医学院 医学免疫学 参考 资料
  7. parallels desktop 缺少组件_德国警方扣留光伏组件盗贼
  8. c语言编程题报文解析,C语言解析pcap文件得到HTTP信息实例
  9. 管理计算机中木桶原理,管理学中有个木桶原理美文摘抄
  10. 修改android_server默认调试端口号来反调试
  11. [PCB设计] 3、用CAM350修改GERBER文件(删除某些部分)
  12. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-20期...
  13. linux gdb 跳出函数,gdb调试程序时跳进函数和跳出函数
  14. [开心学php100天]第六天:用php玩转页面(基础篇)
  15. 蓝牙连接后谷歌浏览器没有声音
  16. Android webView中监听物理返回键一层一层退出
  17. 我眼中的韩国搜索引擎
  18. android x86视频播放,RockPlayer2 (x86)视频播放器
  19. [hqyj]day-9
  20. kettle Spoon.bat闪退解决办法

热门文章

  1. downloadingSpring(Failed to download)下载失败的解决办法
  2. 云安全初识之云计算篇
  3. 全景解析腾讯云安全:从八大领域输出全链路智慧安全能力
  4. Finder教程——了解 Mac 上的“访达”
  5. 第五届河南省程序设计大赛——B 最强DE战斗力(找规律、大数定理)
  6. LaTex---图片排版---多个子图构成一个大图,给子图加小标题(未解决)
  7. 《灵飞经5·龙生九子》第二十三章 力压须眉(下)
  8. VB6实现QQ登陆网页
  9. 如何在本网站域名下展示另外一个网站域名的内容
  10. 基于神经网络的数字识别,神经网络语音识别原理