与其说是对象合并,还不如说是JavaScript中对象属性的复制和转移,将多个对象中的属性合并到一个对象中

1
2
3
4
5
6
7
8
var person = {
name : 'John',
age : 24
},
location = {
address : 'Location',
city : 'NewYork'
} ;

如何可以做到将上述两个对象中的属性合并到同一个对象中,介绍ES6的一个新的方法,Object.assign,如下:

1
Object.assign(target, ...sources) // target为目标对象,sources可以是多个源对象

这个方法可以帮助我们拷贝多个源对象中所有可以被枚举的自身属性到目标对象中,如果目标对象中的属性与源对象中的属性相同的话,源对象的属性会覆盖目标对象的属性,需要注意的是,这里面可以拷贝的属性必须是可以被枚举的自身属性,一个是可枚举,一个是自身,两个条件是必须的,这个方法作用的过程中,会先调用源对象的getter方法,然后调用目标对象的setter方法,从而达到拷贝属性到目标对象的目的

大专栏  ES6学习总结(五)y>
1
2
3
Object.assign(person,location); 

name , age , address, city */

在ES6里面我们使用Obj.assign,我们也可以用ES5来模拟Obj.assign,需要注意拷贝自身的可枚举属性

1
2
3
4
5
6
7
8
9
10
11
function (target, source) {
if (typeof target === 'object' && typeof source === 'object') {
for (var key in source) {
if (fromObj.hasOwnProperty(key)) {
target[key] = source[key];
}
}
}else{
throw "Assign function can apply only on object";
}
}

ES6学习总结(五)的更多相关文章

  1. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  2. ES6学习 第五章 正则的扩展

    前言 本章介绍正则的扩展.有些不常用的知识了解即可. 本章原文链接:正则的扩展 RegExp 构造函数 从 ES6 开始,如果RegExp构造函数第一个参数是一个正则对象,并且第二个标志存在且为标志参 ...

  3. ES6学习笔记五(promise异步)

    知识点1:rosolve是执行下一步then() // Promise { let ajax=function(){ console.log('执行2'); return new Promise(fu ...

  4. ES6学习笔记五:Promise异步任务

    一:Promise对象 Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败). 二:创建与使用 v ...

  5. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  6. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  7. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  8. ES6学习笔记<一> let const class extends super

    学习参考地址1  学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...

  9. es6从零学习(五):Module的语法

    es6从零学习(五):Module的语法 ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量 一:es6模块化和 CommonJS 和 AMD 模块 (运行 ...

随机推荐

  1. swoole使用异步redis

    1.lnmp安装redis拓展 wget http://download.redis.io/releases/redis-4.0.9.tar.gz chmod 755 redis-4.0.9.tar. ...

  2. windows下使用vs code调试简单的C程序

    常使用visual studio code(vs code)打开.c文件,如果让vs code具备调试技能估计会比较有用 准备工作: 1. vs code安装插件:cpptools 2. window ...

  3. 33)new和delete关键字

    ---------------------------------------------------------------------------------------------------- ...

  4. linux epoll 任务队列多线程模型

    /* * *EPOLL ET 触发必须使用非阻塞,LT触发可以阻塞/非阻塞. *read 函数 非阻塞读需 忙轮寻 soket关闭返回0,循环读完数据 *如果已经读完再读read返回 -1,errno ...

  5. 文件操作符|-e|-M|-s|-A|_|-r -w $filename|stat|localtime|&|>>|<<

    TTY:终端是一种字符型设备,它有多种类型,通常使用tty 来简称各种类型的终端设备 #!/usr/bin/perl use strict; use warnings; print "exi ...

  6. Papa开启“点播孙子”模式,新型老年人服务能在国内扎根吗?

    "互联网+"对多个行业的全面赋能和渗入,的确让我们的生活与工作处处充满了便利.很多"跑断腿"才能办的事,现在只要在PC.智能手机上滑动鼠标.点击屏幕就能轻松搞定 ...

  7. [WC2010]重建计划(长链剖分+线段树+分数规划)

    看到平均值一眼分数规划,二分答案mid,边权变为w[i]-mid,看是否有长度在[L,R]的正权路径.设f[i][j]表示以i为根向下j步最长路径,用长链剖分可以优化到O(1),查询答案线段树即可,复 ...

  8. mybatis <where>标签别勿用,否则线上清表

    公司线上发送了清表现象,排除发现: <delete id="scMxdxxxb"> DELETE TABLE <where> <foreach col ...

  9. Angular(一)

    Angular开发者指南(一)入门介绍   什么是AngularAngularJS是动态Web应用程序的结构框架. 它允许您使用HTML作为模板语言,并允许您扩展HTML的语法以清晰,简洁地表达应用程 ...

  10. RegexUtil

    package org.linlinjava.litemall.core.util; import java.util.ArrayList; import java.util.Collections; ...