-
es6之扩展运算符 三个点(...)
2018-09-30 19:09:23es6之扩展运算符 三个点(...)es6之扩展运算符 三个点(...)对象的扩展运算符数组的扩展运算符总结 es6之扩展运算符 三个点(…) 对象的扩展运算符 理解对象的扩展运算符其实很简单,只要记住一句话就可以: ...es6之扩展运算符 三个点(...)
es6之扩展运算符 三个点(…)
对象的扩展运算符
理解对象的扩展运算符其实很简单,只要记住一句话就可以:
对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
let bar = { a: 1, b: 2 }; let baz = { ...bar }; // { a: 1, b: 2 }
上述方法实际上等价于:
let bar = { a: 1, b: 2 }; let baz = Object.assign({}, bar); // { a: 1, b: 2 }
Object.assign
方法用于对象的合并,将源对象(source)
的所有可枚举属性,复制到目标对象(target)
。Object.assign
方法的第一个参数是目标对象,后面的参数都是源对象。(如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。同样,如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。
let bar = {a: 1, b: 2}; let baz = {...bar, ...{a:2, b: 4}}; // {a: 2, b: 4}
利用上述特性就可以很方便的修改对象的部分属性。在
redux
中的reducer
函数规定必须是一个纯函数(如果不是很清楚什么是纯函数的可以参考这里),reducer
中的state
对象要求不能直接修改,可以通过扩展运算符把修改路径的对象都复制一遍,然后产生一个新的对象返回。这里有点需要注意的是扩展运算符对对象实例的拷贝属于一种浅拷贝。肯定有人要问什么是浅拷贝?我们知道
javascript
中有两种数据类型,分别是基础数据类型和引用数据类型。基础数据类型是按值访问的,常见的基础数据类型有Number
、String
、Boolean
、Null
、Undefined
,这类变量的拷贝的时候会完整的复制一份;引用数据类型比如Array
,在拷贝的时候拷贝的是对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化,比如:let obj1 = { a: 1, b: 2}; let obj2 = { ...obj1, b: '2-edited'}; console.log(obj1); // {a: 1, b: 2} console.log(obj2); // {a: 1, b: "2-edited"}
上面这个例子扩展运算符拷贝的对象是基础数据类型,因此对
obj2
的修改并不会影响obj1
,如果改成这样:let obj1 = { a: 1, b: 2, c: {nickName: 'd'}}; let obj2 = { ...obj1}; obj2.c.nickName = 'd-edited'; console.log(obj1); // {a: 1, b: 2, c: {nickName: 'd-edited'}} console.log(obj2); // {a: 1, b: 2, c: {nickName: 'd-edited'}}
这里可以看到,对
obj2
的修改影响到了被拷贝对象obj1
,原因上面已经说了,因为obj1
中的对象c
是一个引用数据类型,拷贝的时候拷贝的是对象的引用。数组的扩展运算符
扩展运算符同样可以运用在对数组的操作中。
- 可以将数组转换为参数序列
function add(x, y) { return x + y; } const numbers = [4, 38]; add(...numbers) // 42
- 可以复制数组
如果直接通过下列的方式进行数组复制是不可取的:
const arr1 = [1, 2]; const arr2 = arr1; arr2[0] = 2; arr1 // [2, 2]
原因上面已经介绍过,用扩展运算符就很方便:
const arr1 = [1, 2]; const arr2 = [...arr1];
还是记住那句话:扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中,这里参数对象是个数组,数组里面的所有对象都是基础数据类型,将所有基础数据类型重新拷贝到新的数组中。
- 扩展运算符可以与解构赋值结合起来,用于生成数组
const [first, ...rest] = [1, 2, 3, 4, 5]; first // 1 rest // [2, 3, 4, 5]
需要注意的一点是:
如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
const [...rest, last] = [1, 2, 3, 4, 5]; // 报错 const [first, ...rest, last] = [1, 2, 3, 4, 5]; // 报错
- 扩展运算符还可以将字符串转为真正的数组
[...'hello'] // [ "h", "e", "l", "l", "o" ]
- 任何 Iterator 接口的对象(参阅 Iterator 一章),都可以用扩展运算符转为真正的数组
这点说的比较官方,大家具体可以参考阮一峰老师的ECMAScript 6入门教程。
比较常见的应用是可以将某些数据结构转为数组,比如:
// arguments对象 function foo() { const args = [...arguments]; }
用于替换
es5
中的Array.prototype.slice.call(arguments)
写法。总结
扩展运算符的用法就说到这里,介绍的不全但都是些最常见的用法。
下面的是我的公众号二维码图片,欢迎关注。
-
Excel2016右键新建工作表,打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名...
2016-10-24 14:30:50请确定文件未损坏,并且文件扩展名与文件的格式匹配。 尼玛这坑爹的,难道我的Excel坏了?? 排查问题之后发现 只有新建“Microsoft Excel 工作表”时会出现这种问题,新建“Word”、“PPT”、“Microsoft ...上午新建excel工作表时,发现新建完之后居然打不开
提示:
因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
尼玛这坑爹的,难道我的Excel坏了??
排查问题之后发现 只有新建“Microsoft Excel 工作表”时会出现这种问题,新建“Word”、“PPT”、“Microsoft Excel 97-2003 工作表”都没有问题,单独打开Excel在里边选择新建工作表也没问题,独独右键新建的文件出问题。
于是开始求助度娘,一看,呵!出现过这种问题的哥们还挺多。。。甚感欣慰,开始按照网上的办法各种试。。。然后就是各种不行
比如修改注册表的HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command
比如修改Excel的加载项
比如修改Excel的模板
....
然而并没有什么卵用
于是开始使用终极大招!重装+重启
然后发现也是没有什么卵用。。。。
好吧 网上的都靠不住,关键时刻还是得看自己啊
仔细分析了一遍,打开Excel可以新建工作表,也可以打开其他的.xlsx文件,说明软件本身木有问题,而且新建“Microsoft Excel 97-2003 工作表”也可以正常打开,这俩的区别就是新老版本的模板的区别,但是肯定不会是因为新老版本不兼容的原因(因为之前百度的时候网上有哥们说过这种问题的解决办法,照着改了也是没有什么卵用),那就只剩下新建文件时选择模板的问题了!!!
问题找到,下面开始找解决办法,但是试了各种自定义模板还是没有解决。。。闹心
真是闹心。
不过幸运女神还是木有抛弃俺,就在俺要放弃的时候,忽然看见微软官网有人问这个问题,链接如下:
office2016无法打开鼠标右键新建excel文件,其他的表格都可以打开
里边有人说了这么一个办法(当然这个办法还是不行):
1.按WIN+R,运行regedit,打开注册表编辑器
2.然后在HKEY_CLASSES_ROOT下找到.xls和.xlsx,右键单击新建-项,命名为shellNew,然后在建立的项中新建-字符串,命名为NullFile,值为空然后我就按照这个开始新建...,就在我新建.xlsx这项的时候,忽然发现已经有shellNew了,不过路径和他说的不一样,但是里边的FileName的值倒是全部指向了Office的模板目录
点开看看,发现.xls下边的ShellNew的FileName的值是之前用的WPS的,可是WPS已经卸载了,而且出问题的是*.xlsx,又不是*.xls,那就先不管它
然后又打开.xlsx下边的ET.Xls.6下边的ShellNew,发现这里的FileName的值也是WPS的,放的是之前WPS的模板路径,将路径复制到文件资源管理器打开,发现找不到路径。这个时候心里已经大致知道咋回事了。然后打开Excel.Sheet.12下边的ShellNew,老样子,赋值FileName的值,发现打开了,打开的是一个空白的Excel文件,文件名:excel12.xlsx,这个应该就是Excel的模板文件了,将这个路径复制粘贴到ET.Xls.6下边的ShellNew的FileName,将原来的值修改为“C:\Program Files (x86)\Microsoft Office\Root\VFS\Windows\ShellNew\excel12.xlsx”,OK,返回桌面,右键>新建>Microsoft Excel 工作表 ,双击顺利打开!!!
原因就是之前新建“Microsoft Excel 工作表”的时候,模板是用的WPS的模板,但是这个模板已经找不到了,所以新建的工作表就有问题,导致Excel打不开。
解决办法:修改上图ET.Xls.6 > ShellNew > FileName的值,修改为Excel自己的模板路径,搞定收工
转载请注明:李锋镝的个人博客>> https://www.lifengdi.com/archives/article/139
-
字扩展,位扩展和字位扩展
2020-04-07 08:39:06位扩展 位扩展指的是用多个存储器器件对字长进行扩充,指的是用多个存储器器件对字长进行扩充,如用2个16KX4位芯片组成16KX8位的存储器。 位扩展的连接方式是将多片存储器的地址、片选CS、读写控制端R/W相应并联,...位扩展
位扩展指的是用多个存储器器件对字长进行扩充,指的是用多个存储器器件对字长进行扩充,如用2个16KX4位芯片组成16KX8位的存储器。
位扩展的连接方式是将多片存储器的地址、片选CS、读写控制端R/W相应并联,数据端分别引出。字扩展
字扩展指的是增加存储器中字的数量。如用4个16KX8位芯片组成64KX8位存储器。
静态存储器进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。
连接方式:数据线D0~D7与各片的数据端相连,地址总线低位地址A0~A13与各芯片的14位地址端相连,而两位高位地址A14、A15经过译码器和4个片选端相连。动态存储器与静态存储器不同,一般不设置CS端,但可用RAS端来扩展字数。
只有当RAS由“1”变“0”时,才会激发出行时钟,存储器才会工作。字位扩展
一个存储器的容量为MXN位,若使用LXK位存储器芯片,那么,这个存储器共需要(M/L)X(N/K)个存储器芯片。
-
win10 php安装seaslog扩展
2020-08-21 18:03:07Win10 PHP安装seaslog扩展步骤一、检查系统环境情况二、下载seaslog扩展包三、配置扩展包1.解压文件夹2.把php_seaslog.dll文件放入ext目录下3.打开php.ini文件,配置扩展四、重启wampserver 一、检查系统环境情况 ...win10 php安装seaslog扩展步骤
一、检查系统环境情况
使用phpinfo()检查系统环境情况,找到需要下载的配置信息。
Thread Safety = enabled是线程安全
Thread Safety = disabled是线程不安全Thread Safety=enabled的,选择Thread Safe的版本;Thread Safety Safety=disabled的。选择Non Thread Safe版本。
二、下载seaslog扩展包
下载地址:http://pecl.php.net/package/SeasLog
找到PHP7.2版本,下载一个X64(我电脑是64位的)Thread Safe的,点击下载,如下图所示:
三、配置扩展包
1.解压文件夹
解压文件夹,找到php_seaslog.dll文件,如下图:
2.把php_seaslog.dll文件放入ext目录下
把php_seaslog.dll文件放在ext目录下,如我的ext目录在
D:\wamp64\bin\php\php7.2.32\ext,则将php_seaslog.dll文件放在该目录下,如下图:
3.打开php.ini文件,配置扩展
打开php.ini文件,在extension位置,添加语句:extension=php_seaslog.dll,完成扩展的配置。如下图:
四、重启wampserver
重启wampserver,配置完成,刷新页面查看phpinfo()打印的信息,出现Seaslog即安装成功,如下图:
-
位扩展和字扩展
2017-07-26 18:51:50字位扩展 存储信息一般是存储在存储器(ROM、RAM)上的 。在实际应用中,经常出现一片ROM或RAM芯片不能满足对存储器容量需求的情况,这就需要用若干片ROM或RAM组合起来 形成一个存储容量更大的存储器。而组合方式有... -
存储器容量扩展——位扩展、字扩展
2020-06-19 11:18:48存储器(二)——存储容量扩展 前言:(基本概念) 存储空间:CPU决定,操作系统 存储器:用户需求决定(4G,8G)(8G的存储器1各芯片能否完成用户需求?如果不能完成,存储器由若干个芯片组成) 存储芯片:芯片... -
大型网站架构核心要素之扩展性:可扩展架构
2020-05-26 15:30:40简单的说就是在对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力,讲扩展性之前,我先讲下扩展性和伸缩性的区别,因为这两个点经常有人会混淆; 扩展性:指对现有系统影响最小的情况下,系统功能可持续... -
字扩展、位扩展、字位同时扩展
2020-04-13 12:18:46于是形成了字扩展、位扩展,字位同时扩展的概念。 二、位扩展 在位扩展中,第一个芯片的数据线连接在CPU的高位数据线中,第二个芯片的数据线连接在CPU的低位数据线中。芯片的地址线直接与CPU的地址线相连。 三、字... -
Kotlin 扩展
2020-08-19 15:48:33文章目录Kotlin 扩展扩展函数扩展函数是静态解析的扩展一个空对象伴生对象的扩展扩展的作用域扩展声明为成员END Kotlin 扩展 Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。 扩展是... -
【windows屏幕扩展】把你多余屏幕利用起来,spacedesk屏幕扩展超低延迟解决方案
2020-03-26 17:57:40spacedesk是一款基于TCP/IP协议的屏幕扩展工具,通过这款工具你可以把自己身边的闲置的平板手机或者笔记本利用起来,扩展你的屏幕。只要你的两台设备处于同一个网络环境下(只要互相能够ping通),你就可以实现屏幕... -
扩展欧几里得算法详解
2018-08-17 00:38:27为了介绍扩展欧几里得,我们先介绍一下贝祖定理: 即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。 换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍。(可以来判断一个这样的式子有没有解... -
es6 扩展运算符 三个点(...)
2016-11-29 12:55:591 含义扩展运算符( spread )是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.... -
符号扩展
2019-09-03 23:20:55符号扩展是指计算机对于小字节转换成大字节的规则。 比如char(1字节)转换成int(4字节),多出来的3个字节到底填充什么? 规则如下: 当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零... -
IPv6扩展头部 (一) 扩展头部格式、类型与扩展选项
2018-07-21 18:27:22接下来介绍一下IPv6扩展头部以及扩展选项的内容,可能会有这样的疑问,有了扩展头部怎么还需要扩展选项?扩展选项是干嘛用的?本篇博客就介绍相关内容。 IPv6扩展头部 在IPv6中,那些由IPv4选项提供的特殊功能,... -
字扩展和位扩展
2019-12-19 23:19:51位扩展 位扩展是指增加存储字长,例如,2片1K X4位的芯片,可以组成1K X 8位的存储器。满足下列条件时,采用位扩展的方式: 只加长每个存储单元的字长,而不增加存储单元的数量 芯片数=设计要求的存储器容量/选择... -
纵向扩展与横向扩展
2017-05-25 07:46:54横向扩展 也叫 水平扩展,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工作 纵向扩展 又叫 垂直扩展,扩展一个点的能力支撑更大的请求。如利用1个人的能力,如蜘蛛侠逼停火车 Scale ... -
Memcached介绍及php-memcache扩展安装
2020-09-13 20:55:57目录Memcached和php-memcache的区别windows环境下安装MemcachedMemcached相关命令windows环境下安装php-memcache扩展 Memcached和php-memcache的区别 ①Memcached技术,是内存缓存。 ②PHP-memcache(或者称为... -
java调用kotlin的扩展方法、扩展属性、扩展函数
2020-05-13 11:36:22kotlin的扩展方法,其实是以java的静态方法形式存在的,也就是说如果要用java调用kotlin的扩展方法,和调用静态函数一样 调用扩展属性也是相同的道理 举个例子,我们在某个kotlin文件(文件名为Utils.kt)里为... -
什么是横向扩展、纵向扩展
2020-07-28 19:42:42你有一台API服务器,每天几百万次请求,吃不消了。现在要提升性能: 横向扩展:多增加几台API服务器,一起服务...纵向扩展 又叫 垂直扩展,扩展一个点的能力支撑更大的请求。如利用1个人的能力,如蜘蛛侠逼停火车 ... -
Jupyter Notebook安装jupyter_contrib_nbextension扩展功能后不显示Nbextensions标签的解决办法(常用扩展...
2018-12-31 17:48:12jupyter_contrib_nbextension是Jupyter Notebook的一个扩展插件,里面集成了很多扩展功能,但是按照网上方法安装配置后,打开notebook总是未显示Nbextensions的标签: 开始安装后,查看pip list,插件都安装成功了,... -
字扩展、位扩展和字位扩展以及片选控制方法
2020-05-26 16:06:220 存储器扩展 单片存储器芯片容量有限,无法满足日常需求,所以要对其扩展 一条内存条上有多个存储芯片,一块主板又可以插多条内存条 1 位扩展 1.1 扩展方式 字数不变,增加位数 地址线、控制线并联,增加数据线... -
符号扩展和无符号扩展
2017-06-18 21:07:54MIPS32 指令集架构中,经常会有指令需要将其中的立即数进行符号扩展,或者无符号扩展,一般都是都是将n位立即数扩展为32位。 无符号扩展:直接将扩展后的数据的高(32-n)位置为0。符号扩展:将扩展后的数据的高(32... -
iOS创建扩展与发布扩展
2015-10-17 13:51:02在创建扩展之前,你需要创建一个用来包含扩展的常规的app项目。这个包含扩展的app称为containing app。在创建好containing app之后,选择File-->New-->Target菜单,选择一个适当的扩展目标模板。每一个扩展目标模板... -
10款好用的谷歌chrome浏览器插件、扩展程序,用起来很爽哦
2019-10-29 09:58:45TOP 1:Adblock Plus 介绍:Adblock Plus是Chrome浏览器中非常流行的一款广告拦截插件,Adblock Plus的用户多达数百万之多,在全球范围内都有很高的使用评价,Adblock Plus是由一个开源社区来维护。... -
扩展欧几里得求数字逆元
2020-03-28 14:11:53扩展欧几里得求数字逆元python求公约数的代码python扩展欧几里得求逆元代码C++扩展欧几里得求逆元代码 欧几里得算法大家应该都听说过,是一个求最大公约数的算法,又叫辗转相除法。大致算法的思路就是,要求a,b... -
扩展二叉树
2018-09-14 01:48:30我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。 现给出扩展二叉树的先序序列,要求输出其中序和后序序列。 【输入】 扩展二叉树的先序序列。 【输出】 ... -
用 Splashtop Wired XDisplay HD 让 ipad做电脑扩展屏幕
2019-01-13 20:10:36ipad用做电脑扩展屏幕的软件很多,有Duet Display,TwomonUSB,splashtop,iDisplay,Air Display等,但是这几个使用下来就 splashtop的XDisplay 好用一点,而且免费。 ipad端安装 Splashtop Wired XDisplay HD - ... -
扩展操作码的总结
2016-10-01 13:51:55需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多! 之所以这么强调,是因为常常混淆了操作码的扩展方向。再看扩展的原理: 假设指令字长是16位,平均劈开成4份,高位4位用作操作码,... -
理解水平扩展和垂直扩展
2018-03-11 09:35:53当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题 以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一... -
OpenCL扩展
2016-05-10 22:36:22摘要:OpenCL扩展是指device支持某种特性,但这中特性并不是OpenCL标准的一部分。通过扩展,厂商可以给device增加一些新的功能,而不用考虑兼容性问题。现在各个厂商在OpenCL的实现中或多或少的使用了自己的扩展。 ...
-
Codeforces Round #697 (Div. 3) C. Ball in Berland
-
转行做IT-第6章 IDEA、方法
-
安装脚本(.run)文件制作步骤
-
基于拓扑更新算法的向量网络连接设计
-
PCL聚类和最小包围盒AABB
-
想要加入python队伍中,这些是你必须要了解的
-
三菱燃气机机组型号参数.doc
-
一种支持隐私保护的加密方法在云存储中的应用
-
2021最新Windows10环境下安装MacOS系统(黑苹果)亲测有效!!(VM安装黑苹果)
-
JUC并发编程.md
-
application.yml
-
基于Django的电子商务网站设计---第四章 模型和数据库
-
C++异步串口通信
-
现代汉语词典.zip
-
算法导论(基础知识)——编程大牛的必经之路
-
微信支付V3版微信小程序支付C#版
-
Spring Cloud Alibaba:Sentinel 热点参数限流
-
电商平台对接第三方快递鸟物流轨迹查询api接口申请对接全流程
-
程序设计也要懂点心理学
-
21年新消息队列RabbitMQ视频教程AMQP教程