From 4deec8872e2e3f4e1a6b745e7379ff09dd587939 Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Wed, 4 Apr 2018 22:58:12 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9AES6=E4=B9=8B=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E5=92=8C=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 00-前端工具/VS Code.md | 8 + .../02-JavaScript语法基础:运算符和表达式.md | 1 + 10-ES6/06-ES6:字符串、数组、对象的扩展.md | 194 ++++++++++++++---- 3 files changed, 162 insertions(+), 41 deletions(-) diff --git a/00-前端工具/VS Code.md b/00-前端工具/VS Code.md index 7208393..e8cb2f9 100644 --- a/00-前端工具/VS Code.md +++ b/00-前端工具/VS Code.md @@ -1,5 +1,13 @@ +## 常用快捷键 + +### 代码格式化 + +Shift + Alt + F + +## 问题 + 问题: 解决;You can kill the Microsoft.VSCode.Cpp.IntelliSense.Msvc process to save the file successfully. 也就是 IntelliSense 这个进程。 \ No newline at end of file diff --git a/03-JavaScript基础/02-JavaScript语法基础:运算符和表达式.md b/03-JavaScript基础/02-JavaScript语法基础:运算符和表达式.md index 99bd49b..7bd7024 100644 --- a/03-JavaScript基础/02-JavaScript语法基础:运算符和表达式.md +++ b/03-JavaScript基础/02-JavaScript语法基础:运算符和表达式.md @@ -157,6 +157,7 @@ sqrt即“square 开方”。比如: ``` console.log("6" == 6); //true + console.log(0 == -0); //true ``` 如果要保证**完全等于**,我们就要用三个等号`===`。例如: diff --git a/10-ES6/06-ES6:字符串、数组、对象的扩展.md b/10-ES6/06-ES6:字符串、数组、对象的扩展.md index e9551f3..c714e72 100644 --- a/10-ES6/06-ES6:字符串、数组、对象的扩展.md +++ b/10-ES6/06-ES6:字符串、数组、对象的扩展.md @@ -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 - -``` - - - - -