JavaScript Object学习笔记一
Object.assign(target, source1, source2, ...)//用于对象的复制合并(同名属性后覆盖前)或拷贝(拷贝自身可枚举属性,不拷贝继承属性或不可枚举属性),将source源对象的可枚举属性合并到target目标对象上并返回新的目标对象
Object.assign拷贝的是属性值,如果源对象的属性值是一个对象或者其他引用类型的话,拷贝的是这个对象的引用,改变目标对象或源对象的属性值时,对应都会改变,实现的是浅拷贝。如果源对象的属性值是基本数据类型的话,改变源对象或者目标对象的属性值时,不会相互影响改变,实现的是深拷贝。
var obj1 = {name: 'abc', other: {age: 10, sex: 'boy'}};
var obj2 = Object.assign({}, obj1);
obj1.name = 'def';
obj1.other.age = 20;
obj2;//{name: 'abc', other: {age: 20, sex: 'boy'}}
obj2.other.sex = 'girl';
obj1;//{name: 'abc', other: {age: 20, sex: 'girl'}}
如果目标参数不是对象,则会转化为对象返回(eg: Object.assign(2)//new Number(2)),但是undefined和null在目标对象位置无法转化为对象,所以会报错,但是在源对象位置,则会跳过不会报错。源对象不是对象的话,如果不能转化为对象则会跳过,除了字符串会以数组形式解构拷贝到目标对象上,其他类型参数都会跳过
eg: Object.assign({}, 'abc', 1, true, undefined, null, NaN, Symbol('1'))
//{0: 'a', 1: 'b', 2: 'c'}
Object.assign([1, 2, 3], [4, 5])//[4,5,3]
相当于Object.assign({0: 1, 1: 2, 2: 3}, {0: 4, 1: 5})
Object.assign()不会拷贝求值取值函数,而是将函数运算完作为一个值拷贝,也不会拷贝属性值的get或set方法
Object.assign({}, {get fn(){return 1;}})//{fn: 1}
JavaScript Object学习笔记一的更多相关文章
- JavaScript Object学习笔记二
Object.create(proto, [propertiesObject])//创建对象,使用参数一来作为新创建对象的__proto__属性,返回值为在指定原型对象上添加自身属性后的对象 //参数 ...
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- JavaScript简易学习笔记
学习地址:http://www.w3school.com.cn/js/index.asp 文字版: https://github.com/songzhenhua/github/blob/master/ ...
- javaScript 对象学习笔记
javaScript 对象学习笔记 关于对象,这对我们软件工程到学生来说是不陌生的. 因为这个内容是在过年学到,事儿多,断断续续,总感觉有一丝不顺畅,但总结还是要写一下的 JavaScript 对象 ...
- 【MarkMark学习笔记学习笔记】javascript/js 学习笔记
1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...
- Javascript MVC 学习笔记(一) 模型和数据
写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...
- ECMAScript5之Object学习笔记(一)
随着IE的逐步追赶,目前到IE11已经能够很好的支持ECMAScript5标准了,其他的现代浏览器像firefox,chrome,opera就更不用说了. 再加上nodejs使得javascript在 ...
- Javascript作用域学习笔记(三)
看完<你不知道的javascript>上,对作用域的新的理解(2018-9-25更) 一.学习笔记: 1.javascript中的作用域和作用域链 + 每个函数在被调用时都会创建一个 ...
随机推荐
- IE zoom
zoom是IE浏览器特有的属性,它可以设置或检索对象的缩放比例(它的中文解释是:放大),它的作用通常可以概括为三个方面: 1.hasLayout 2.清除浮动 3.清除div的垂直外边距合并问题 什么 ...
- <!--[if IE]><style></style><![endif]-->
CSS hack就是为了让你的CSS代码兼容不同的浏览器,其中最难对付的就是IE浏览器的兼容性,因为它的版本很多,不过还好,微软发表声明已经不对IE8以下的版本进行维护了.但是我们也不能就认为不用学I ...
- Springboot集成cache的key生成策略
代码接上文:深度理解springboot集成redis缓存之源码解析 ## 1.使用SpEL表达式 @Cacheable(cacheNames = "emp",key = &quo ...
- LC-54
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2 ...
- 1.Docker容器学习之新生入门必备基础知识
0x00 Docker 快速入门 1.基础介绍 描述:Docker [ˈdɑ:kə(r)] 是一个基于Go语言开发实现的遵循Apache 2.0协议开源项目,目标是实现轻量级的操作系统虚拟化解决方案: ...
- 一键智能Mock,你值得拥有
大家好呀,我是一名苦逼的前端开发工程师,为啥苦逼呢,这不,项目下周就要上线了,但是后端还没给我接口,没有接口我就无法调试,工作停滞不前,我也只能坐着干着急. 我报告给了我的老板山哥: 老板,这后端 ...
- HCNP Routing&Switching之组播技术PIM-SM RP
前文我们了解了组播技术中,组播路由协议PIM的稀疏模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16142795.html:今天我们来聊一聊组播路 ...
- C#语法糖系列 —— 第一篇:聊聊 params 参数底层玩法
首先说说为什么要写这个系列,大概有两点原因. 这种文章阅读量确实高... 对 IL 和 汇编代码 的学习巩固 所以就决定写一下这个系列,如果大家能从中有所收获,那就更好啦! 一:params 应用层玩 ...
- Infrastructure 知识: DNS 命令: dig, host
dig 基本用法: dig @server name type 或者用-t type来指定(更常见) dig @server -t type name 例子详解 # 最简单的使用 $ dig www. ...
- Java基础语法Day_07(1-3 常用API第一部分)
常用API第一部分 第1节 Scanner类 day07_01_API概述和使用步骤(使用最基本的三个步骤 搜索 构造方法 方法) day07_02_Scanner概述及其API文档 ...