书接上会把剩余的继续写完!
13、判断Object中是否含有某个属性
大家比较熟悉的 `Object.hasOwnProperty();`
还有一中: `key in Object;`
这两种也可以用来判断Object是否为空!
14、使用map遍历Object
都是到map是数组的方法,但是有些场景时候我也需要遍历数组又不能使用`for in` 或者`for of`的时候怎么办呢!
我们可以是用一下三个方法:
`Object.keys();`:
这个方法返回的是Object中的所有`key`组成一个数组;
`Object.values();`
这个方法返回的是Object中的所有`value`组成一个数组;
`Object.entries();`:
这个方法返回的是一个二位数组,子集包含Object的key和value;
15、Object.is();
方法是将两个Object作比较,省去了我们循环遍历的代码;
16、Object.assign();与 {...object1, ...object2}
这个方法类似于数组的concat方法,不同的是`Object.assign();`连接历来你给个对象的时候如果
两个对象有属性重复的时候,后面的会把前面的覆盖; es6中我们简写成`{...object1, ...object2}`
17、...
拓展运算符
es6中新提出来的,主要作用:
- 合并array或者object
```
// ES5 的写法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.conant(arr1, arr2);
// ES6 的写法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2);
```
- 与解构赋值结合
```
// ES5
a = list[0], rest = list.slice(1)
// ES6
[a, ...rest] = list
下面是另外一些例子。
const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest // [2, 3, 4, 5]
const [first, ...rest] = [];
first // undefined
rest // []:
const [first, ...rest] = ["foo"];
first // "foo"
rest // []
```
或者很多博主写的`剩余参数`都是这个东西
```
function add(first, second, ...remaining) {
return first + second;
}
```
- 函数的返回值
JavaScript 的函数只能返回一个值,如果需要返回多个值,只能返回数组或对象。扩展运算符提供了解决这个问题的一种变通方法。
```
var dateFields = readDateFields(database);
var d = new Date(...dateFields);
```
上面代码从数据库取出一行数据,通过扩展运算符,直接将其传入构造函数Date。
- 字符串
扩展运算符还可以将字符串转为真正的数组。
```
[...'hello']
// [ "h", "e", "l", "l", "o" ]
```
上面的写法,有一个重要的好处,那就是能够正确识别 32 位的 `Unicode` 字符。
```
'x\uD83D\uDE80y'.length // 4
[...'x\uD83D\uDE80y'].length // 3
```
上面代码的第一种写法, JavaScript 会将 32 位 Unicode 字符,识别为 2 个字符,采用扩展运算符就没有这个问题。因此,正确返回字符串长度的函数,可以像下面这样写。
```
function length(str) {
return [...str].length;
}
length('x\uD83D\uDE80y') // 3
```
18、[]
设定变量为属性名
栗
let obj = {}, name = 'machinist'
obj[name] = 1111;
console.log(obj); //{machinist: 1111}
在补上一些常用的简写
-
当if条件内部只有一行代码的时候省略
{}
栗:if(true)retrun true else return false
-
当函数体内只有一行代码的时候
栗:() => ...你的代码
等同于:
()=> { .... }
-
当函数体内
return
一个map
的时候可以省略return 以及函数的大括号;
栗:arrayMap = data => data.map(item => { ....处理逻辑 })
等同于:
arrayMap = (data) => { return data.map(item => { ....处理逻辑 }) }
-
同时声明多个变量的时候;
栗:let a = 1, b = 2, c = 3, ..., z = 26;
等同于:
let a = 1; let b = 2; ...; let z = 26;
5.声明对象带方法的
栗:
let object = { func(){ ... }, func1(){ ... }, func2(){ ... }, }
等同于:
let object = { func:() => { ... }, func1:() =>{ ... }, func2:() =>{ ... }, }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。