update:ES6之数组和对象的扩展

This commit is contained in:
qianguyihao 2018-04-04 22:58:12 +08:00
parent 97fa3f9122
commit 4deec8872e
3 changed files with 162 additions and 41 deletions

View File

@ -1,5 +1,13 @@
## 常用快捷键
### 代码格式化
Shift + Alt + F
## 问题
问题:
解决You can kill the Microsoft.VSCode.Cpp.IntelliSense.Msvc process to save the file successfully. 也就是 IntelliSense 这个进程。

View File

@ -157,6 +157,7 @@ sqrt即“square 开方”。比如:
```
console.log("6" == 6); //true
console.log(0 == -0); //true
```
如果要保证**完全等于**,我们就要用三个等号`===`。例如:

View File

@ -149,26 +149,166 @@ ES6中的字符串扩展用得少而且逻辑相对简单。如下
console.log(arr);
```
### 扩展3
- 3. find(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素
- 4. findIndex(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素的index
**方法1**
```javascript
find(function(item, index, arr){return true})
```
**作用**找出第一个满足「指定条件返回true」的元素。
举例:
```javascript
let arr = [2, 3, 2, 5, 7, 6];
let result = arr.find(function (item, index) {
return item > 4; //遍历数组arr一旦发现有第一个元素大于4就把这个元素返回
});
console.log(result); //打印结果5
```
**方法2**
```javascript
findIndex(function(item, index, arr){return true})
```
**作用**找出第一个满足「指定条件返回true」的元素的index。
举例:
> 我们直接把上面的代码中的find方法改成findIndex即可。
```javascript
let arr = [2, 3, 2, 5, 7, 6];
let result = arr.findIndex(function (item, index) {
return item > 4; //遍历数组arr一旦发现有第一个元素大于4就把这个元素的index返回
});
console.log(result); //打印结果3
```
## 对象的扩展
### 扩展1
```javascript
Object.is(v1, v2)
```
**作用:**判断两个数据是否完全相等。底层是通过**字符串**来判断的。
我们先来看下面这两行代码的打印结果:
```javascript
console.log(0 == -0);
console.log(NaN == NaN);
```
打印结果:
```
true
false
```
上方代码中第一行代码的打印结果为true这个很好理解。第二行代码的打印结果为false因为NaN和任何值都不相等。
但是,如果换成下面这种方式来比较:
```javascript
console.log(Object.is(0, -0));
console.log(Object.is(NaN, NaN));
```
打印结果却是:
```
false
true
```
代码解释:还是刚刚说的那样,`Object.is(v1, v2)`比较的是字符串是否相等。
### 扩展2重要
```javascript
Object.assign(目标对象, 源对象1, 源对象2...)
```
**作用:** 将源对象的属性复制到目标对象上。
举例:
```javascript
let obj1 = { name: 'smyhvae', age: 26 };
let obj2 = { city: 'shenzhen' };
let obj3 = {};
Object.assign(obj3, obj1, obj2);
console.log(obj3);
```
打印结果:
20180404_2240.png
上图显示成功将obj1和obj2的属性复制给了obj3。
### 扩展3`__proto__`属性
举例:
```javascript
let obj1 = {name:'smyhvae'};
let obj2 = {};
obj2.__proto__ = obj1;
console.log(obj1);
console.log(obj2);
console.log(obj2.name);
```
打印结果:
20180404_2251.png
上方代码中obj2本身是没有属性的但是通过`__proto__`属性和obj1产生关联于是就可以获得obj1里的属性。
@ -188,31 +328,3 @@ ES6中的字符串扩展用得少而且逻辑相对简单。如下
```javascript
```
```javascript
```