ES6-11最新语法大全

ES6-ES11

  • 一、ES简介
  • 二、NRM的安装与使用
    • 2.1安装
    • 2.2 操作指令
  • 三、let const var
    • 3.1 var 声明
    • 3.2 JS的败笔
    • 3.3 let
    • 3.4 const
  • 四、解构赋值
    • 4.1 数组结构赋值
    • 4.2 对象解构赋值
    • 4.3 字符串解构赋值
    • 4.4 应用场景
  • 五、数组的各种遍历方式
    • 5.1 for
    • 5.2 forEach
    • 5.3 map
    • 5.4 filter
    • 5.5 some
    • 5.6 every
    • 5.7 reduce
    • 5.8 for...in
    • 5.9 find
    • 5.10 findIndex
    • 5.11 for..of
  • 六、数组的扩展
    • 6.1 类数组(伪数组)
    • 6.2 将伪数组转换成数组
      • 6.2.1 Array.prototype.slice.call()
      • 6.2.2 Array.from()
    • 6.3 构造函数表示数组
    • 6.4 Array.of()
    • 6.5 copyWithin
    • 6.6 fill
    • 6.7 indexOf和includes
  • 七、函数的参数
    • 7.1 ES5传参
    • 7.2 ES6传参
  • 八、扩展运算符与rest参数
    • 8.1 扩展运算符
    • 8.2 rest参数
  • 九、箭头函数
    • 9.1 ES5声明函数
    • 9.2 ES6箭头函数
  • 十、对象的的扩展
    • 10.1 属性的简写
    • 10.2 属性名表达式
    • 10.3 方法的简写形式
    • 10.4 Object.is()
    • 10.5 Object.assign()
    • 10.6 in
      • 10.6.1 判断对象是否包含某个属性
      • 10.6.2 数组里判断当前下标是否有值
    • 10.7 对象的遍历
  • 十一、深拷贝与浅拷贝
    • 11.1 手写深拷贝
  • 十二、面向对象与面向过程
  • 十三、ES5中的类与继承
    • 13.1 ES5中的类
    • 13.2 ES5中的继承
      • 13.2.1 构造函数的继承
      • 13.2.2 原型继承
      • 13.2.3 组合继承![在这里插入图片描述](https://img-blog.csdnimg.cn/20210409153134284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd4aWFvY2hhb2M=,size_16,color_FFFFFF,t_70)
  • 十四、ES6的类与继承
    • 14.1 ES6中的类
    • 14.2 ES6的继承
    • 14.3 定义静态属性

一、ES简介

  • ECMAScript,欧洲计算机制造商协会
  • ES是一种标准,而JS是ES的一种实现
  • 每年的ES版本中都会引入新特性

二、NRM的安装与使用

  • NRM是切换源的工具

2.1安装

  • window命令:
 npm install -g nrm
  • mac下命令:
sudo npm install -g nrm

2.2 操作指令

  • 查看可选源
nrm ls
  • 测试源的速度
 nrm test +源名称
  • 切换源
nrm use +源名称
  • 增加定制源
nrm add 源名  http://ip地址
  • 删除源
nrm del+源名

三、let const var

3.1 var 声明

  • delete只能删除对象的属性,不能删除变量

ES6-11最新语法大全_第1张图片
在这里插入图片描述

  • 说明b是属性,不是变量。b是全局变量window的属性

3.2 JS的败笔

ES6-11最新语法大全_第2张图片

  • 可以看到 window.a也被打印出来了,如果有很多全局变量,就会造成变量污染
  • 为了解决这一败笔,let就诞生了

3.3 let

ES6-11最新语法大全_第3张图片

  • 可以看到window.a是undefined,说明let声明的变量不属于顶层对象window
  • 不允许重复声明(多次声明同一变量)
  • 不存在变量提升
  • 暂时性死区(就是防止在声明变量之前去使用变量)
  • 具有块级作用域

3.4 const

  • 不属于顶层对象window
  • 不允许重复命名
  • 暂时性死区
  • 具有块级作用域
  • 不存在变量提升
  • 声明常量

四、解构赋值

  • 含义:找一定模式,从数组或对象中提取值,对变量进行赋值

4.1 数组结构赋值

ES6-11最新语法大全_第4张图片

4.2 对象解构赋值

ES6-11最新语法大全_第5张图片

  • 变量起别名
    ES6-11最新语法大全_第6张图片

4.3 字符串解构赋值

ES6-11最新语法大全_第7张图片

4.4 应用场景

  • 对于有默认值的数组和对象
  • 对参数的解构赋值
    ES6-11最新语法大全_第8张图片
  • 对返回值结构赋值
    ES6-11最新语法大全_第9张图片
  • 对json解构
    ES6-11最新语法大全_第10张图片

五、数组的各种遍历方式

5.1 for

ES6-11最新语法大全_第11张图片

5.2 forEach

  • 注意:forEach不支持break和continue关键字
    ES6-11最新语法大全_第12张图片

5.3 map

  • map的返回值是新数组,但不会改变原数组
    ES6-11最新语法大全_第13张图片

5.4 filter

  • 数组过滤 返回符合条件的元素组成新的数组返回
    ES6-11最新语法大全_第14张图片

5.5 some

  • 返回值是布尔值,只要有一个满足要求就返回true
    ES6-11最新语法大全_第15张图片

5.6 every

ES6-11最新语法大全_第16张图片

5.7 reduce

  • 作为一个函数返回的累加器
    ES6-11最新语法大全_第17张图片
    ES6-11最新语法大全_第18张图片
    ES6-11最新语法大全_第19张图片

5.8 for…in

  • 一般不用来遍历数组,因为会把原型下的方法也遍历出来

ES6-11最新语法大全_第20张图片

5.9 find

  • 返回第一个通过测试的元素
    ES6-11最新语法大全_第21张图片

5.10 findIndex

  • 返回第一个符合条件的元素的下标
    ES6-11最新语法大全_第22张图片

5.11 for…of

ES6-11最新语法大全_第23张图片
ES6-11最新语法大全_第24张图片
ES6-11最新语法大全_第25张图片
ES6-11最新语法大全_第26张图片

六、数组的扩展

6.1 类数组(伪数组)

  • 如下 都是类数组,可以用typeof instanceof Array.isArray来验证

ES6-11最新语法大全_第27张图片
ES6-11最新语法大全_第28张图片

6.2 将伪数组转换成数组

6.2.1 Array.prototype.slice.call()

ES6-11最新语法大全_第29张图片

6.2.2 Array.from()

ES6-11最新语法大全_第30张图片

6.3 构造函数表示数组

ES6-11最新语法大全_第31张图片

  • 显然第二种情况和我们想象的不太一样,我们想要的是[3],为了解决这一问题,我们就引入了Array.of

6.4 Array.of()

ES6-11最新语法大全_第32张图片

6.5 copyWithin

ES6-11最新语法大全_第33张图片

6.6 fill

ES6-11最新语法大全_第34张图片

6.7 indexOf和includes

  • indexOf不能检测数组中是否有NAN
  • NAN==NAN结果是false
    ES6-11最新语法大全_第35张图片

七、函数的参数

7.1 ES5传参

ES6-11最新语法大全_第36张图片

  • 当y有默认值时
    ES6-11最新语法大全_第37张图片
  • 上一步代码有一个问题,当y我们传0时 0===false
  • 如果要解决这种问题,需要麻烦的判断
  • 所以我们可以用ES6的传参方式来解决这一问题
    ES6-11最新语法大全_第38张图片

7.2 ES6传参

  • ES6解决参数默认值问题
    ES6-11最新语法大全_第39张图片
  • 参数变量是默认声明的
    ES6-11最新语法大全_第40张图片
    -参数名不允许重复
  • 默认值应该放到最后边
  • length能获取函数中没有指定默认值的参数的个数
    ES6-11最新语法大全_第41张图片
  • 默认参数作用域问题
    在这里插入图片描述
    ES6-11最新语法大全_第42张图片
    ES6-11最新语法大全_第43张图片

八、扩展运算符与rest参数

8.1 扩展运算符

  • 把数组或类数组展开成用逗号分隔的值
    ES6-11最新语法大全_第44张图片
  • ES5合并数组
    ES6-11最新语法大全_第45张图片
  • ES6合并数组
    在这里插入图片描述

8.2 rest参数

  • 把逗号隔开的值组成一个新的数组
  • ES5不定参数求和
    ES6-11最新语法大全_第46张图片
  • ES6不定参数求和
    ES6-11最新语法大全_第47张图片
    ES6-11最新语法大全_第48张图片

九、箭头函数

9.1 ES5声明函数

  • 第一种会预编译,第二种不会

ES6-11最新语法大全_第49张图片
ES6-11最新语法大全_第50张图片

9.2 ES6箭头函数

  • this指向定义时所在的函数的对象,而不是调用时所在的对象
  • 不可以当做构造函数
  • 不可以使用arguments对象
    ES6-11最新语法大全_第51张图片

十、对象的的扩展

10.1 属性的简写

  • 当属性值与属性相同时,可以这样简写
    ES6-11最新语法大全_第52张图片

10.2 属性名表达式

ES6-11最新语法大全_第53张图片

10.3 方法的简写形式

  • 注意: 对象里定义方法不要写箭头函数,因为this指向问题

ES6-11最新语法大全_第54张图片

10.4 Object.is()

  • 判断两个值是否严格相等
与==的区别是:==会进行类型转换,而Object.is不会
与===的区别是:===会认为+0和-0相等,NumberNaN与NaN不相等,而Object.is不会

10.5 Object.assign()

  • 对象复制
    ES6-11最新语法大全_第55张图片
    ES6-11最新语法大全_第56张图片
  • Object.assign()是浅拷贝
  • 可以用于对象合并,将源对象的所有可枚举属性复制到对象中(第一个参数是对象,其余都是源对象)

10.6 in

10.6.1 判断对象是否包含某个属性

ES6-11最新语法大全_第57张图片

10.6.2 数组里判断当前下标是否有值

ES6-11最新语法大全_第58张图片

10.7 对象的遍历

ES6-11最新语法大全_第59张图片ES6-11最新语法大全_第60张图片
ES6-11最新语法大全_第61张图片
ES6-11最新语法大全_第62张图片

十一、深拷贝与浅拷贝

  • Object.assign()是浅拷贝,拷贝引用类型时只是把地址指过去而已
  • JSON.parse(JSON.stringify(obj))可以实现新拷贝

11.1 手写深拷贝

ES6-11最新语法大全_第63张图片

十二、面向对象与面向过程

  • 面向对象就是把物体本身看作是一个对象,再从对象本身具有的功能和方法出发
  • 面向过程就是把大象装进冰箱一共分为三步,必须按照这个顺序进行
  • JS是基于面向对象的编程语言
  • 类(class)是对象(Object)的模板,定义了一组对象共有的方法和属性

十三、ES5中的类与继承

13.1 ES5中的类

ES6-11最新语法大全_第64张图片

  • 静态属性直接定义在类上,实例属性定义在构造函数中
    ES6-11最新语法大全_第65张图片
  • 静态方法
  • 实例方法都定义在类的原型上
  • 静态方法里的this指向的是构造函数
    ES6-11最新语法大全_第66张图片

13.2 ES5中的继承

13.2.1 构造函数的继承

ES6-11最新语法大全_第67张图片

13.2.2 原型继承

ES6-11最新语法大全_第68张图片

13.2.3 组合继承ES6-11最新语法大全_第69张图片

十四、ES6的类与继承

14.1 ES6中的类

ES6-11最新语法大全_第70张图片

14.2 ES6的继承

ES6-11最新语法大全_第71张图片

14.3 定义静态属性

  • class中目前不支持定义静态属性

ES6-11最新语法大全_第72张图片

你可能感兴趣的:(ES6-11,es6/es7,es6,javascript,前端)