JS语法糖总结
最近的实习中大量运用到一些JS的骚操作,现在把碰到的一些用法进行一下总结。
我定义如下图的对象,方便下面的讲解
1 | const graph = { |
参数解构
通过使用{}
,我们可以更简洁地进行对象属性的引用
1 | // 这是过去的写法 |
拓展运算符与剩余参数...
这里摘抄一下MDN的说法,
展开语法(Spread syntax), 可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开;还可以在构造字面量对象时, 将对象表达式按key-value的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: “mdn”} 这种简洁的构造方式)
函数参数
数组拷贝
基础用法
1 | const arr1 = [1,2,3]; |
通过展开运算符,我们可以更简单地构建在数组任意位置添加/删除元素地函数.当然,下面地例子会返回一个新的数组
1 | const add = (arr, index, val) => [ |
初始化对象
前面说到,展开运算符会将对象表达式按key-value的方式展开,这点在声明一个“继承”自原有对象的新对象特别好用,比如
1 | const newGraph = { |
此时声明的newGraph
就会获得graph
的所有属性且值相同,并且获得新属性label
,但注意,这种拷贝是浅拷贝,(不拷贝__prototype
)
可计算的属性名
如果需要动态地进行对象读写,比如同时写入新的键值对
1 | const city = 'Changsha'; |
如此可以动态地改变对象内部地键值,即采用[key]:value
这种形式去写。