update:ES6之数组和对象的扩展
This commit is contained in:
		
							parent
							
								
									97fa3f9122
								
							
						
					
					
						commit
						4deec8872e
					
				@ -1,5 +1,13 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 常用快捷键
 | 
			
		||||
 | 
			
		||||
### 代码格式化
 | 
			
		||||
 | 
			
		||||
Shift + Alt + F
 | 
			
		||||
 | 
			
		||||
## 问题
 | 
			
		||||
 | 
			
		||||
问题:
 | 
			
		||||
 | 
			
		||||
解决;You can kill the Microsoft.VSCode.Cpp.IntelliSense.Msvc process to save the file successfully. 也就是 IntelliSense 这个进程。
 | 
			
		||||
@ -157,6 +157,7 @@ sqrt即“square 开方”。比如:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
	console.log("6" == 6);		//true
 | 
			
		||||
	console.log(0 == -0);       //true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
如果要保证**完全等于**,我们就要用三个等号`===`。例如:
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user