ES6

本文对ES6的一些简单用法进行介绍,希望对您有所帮助

ES6

一. 定义变量

  1. let 与var 的区别

    let必须先定义再使用

    变量重名 let 的会报错 var不会

    块级作用域

    ​ let 会被括号{ }限制

    ​ var 只会被function限制

  2. const 常量 必须赋初值 后面不可再被赋值

二. 箭头函数

  1. 格式

    var test = () => {

    ​ ..

    }

  2. 小括号可以省略

    条件 形参只有一个

    var test = a=>{

    }

  3. 大括号可以省略

    只有一句代码时

    只有一个return 时 return也可以省

  4. 没有arguments

    arguments 是用来获取形参 的一个伪数组

  5. this问题

    箭头函数this 是父级作用域的

三. 解构赋值

  1. 按照结构快速从数组中取值

    交换 a b值

    1
    2
    3
    var a = 10 
    var b = 20
    var [b,a] = [a,b]

    多维数组取值

    1
    2
    3
    4
    var arr = [1,2,[3,4,[5]]]
    //取5
    var [a,b,[c,d,[e]]] = arr
    // e 即为值
  2. 快速取对象中的值

    1
    2
    3
    4
    5
    6
    7
    8
    var obj = {
    name:"kai",
    age:100,
    location:111
    }
    let {name,age,location} = obj
    // 要对应 对号入座
    // 有时候会重名 解决方法:location:mylocation \ 或者用var \ 用.获取

四. 对象简写

  1. 当key 和 变量 一致时可以省略一个
  2. 值为函数时可以省掉 :function

五. 展开运算符

  1. 三个点

    1
    2
    3
    4
    var a = [1,2,3]
    var b = [4,5,6]
    var d = [a,b] // [[1,2,3],[4,5,6]]
    var c = [...a,...b] // 1 2 3 4 5 6
  2. 不确定数形参

  3. 实参 也会对号入座

  4. 伪数组转化

    var arr = […arguments]

  5. 合并对象

    var obj = {

    ​ …obj1,

    ​ …obj2

    }

六. 模块化语法

  1. 使用方法

    1
    export {函数名1,函数名2,...}
    1
    2
    3
    <script type="module">
    import {函数名1,函数名2,...} from './文件包名/文件名.js'
    </script>
  2. 解决问题

  • 私密不漏 不能调js文件中的私密函数

  • 重名问题 导入多个时如果有重名会提示报错

    1
    import {函数名1,函数名2 as 新函数名2,...}
  • 依赖不乱 导入顺序不对会出问题

    可以在需要调用别的js文件的文件中import导入

七. 面向对象

  1. 创建对象

    字面量

    new 方法

    工厂函数

    自定义构造函数

    注意:

    ​ 首字母大写 推荐

    ​ 构造函数无return 无意义

    1
    2
    3
    4
    5
    function CreateObj(name){
    this.name = name
    this.a = 1
    }
    var obj1 = new CreateObj(111)
  2. 原型

    共用内存

    构造函数.prototype.共享函数 = 。。。

    对象.__ proto__ === 构造函数.prototype

    扩展 原型链

    ​ 对象调用方法时 先找自己有没有 再找构造函数的prototype 没有再找上一级的

    ​ 顶点为Object

  3. ES6 的class

    语法糖 单纯的换了个形式

    1
    2
    3
    4
    5
    6
    class Create{
    constructor{
    //构造函数
    }
    。。。
    }
  4. 继承

    语法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    //构造函数继承 -- 属性继承
    //无法继承方法
    function person(name,age) {
    this.name = name
    this.age = age
    }
    person.prototype.say = function(){
    ...
    }
    function student(name,age,grade){
    person.call(this,name,age) //call 改变了this指向 由window指向student构造函数
    this.grade = grade
    }
    //原型继承
    student.prototype = person.prototype //不可取 会相互改变影响
    student.prototype = new person() //不相互影响 但会多废料 但不会影响
    student.prototype.print = function(){...} //增加方法
    student.prototype.say = function(){...} //覆盖方法
    student.prototype.say2 = function(){ //增强方法 重起个名字
    this.say()
    ...
    }
    //组合继承 -- 两者结合
  5. ES6 继承

    1
    2
    3
    4
    5
    6
    7
    //extends 原型继承 
    class student extends person{
    constructor(name,age){
    super(name,age) //person.call(this,name,age)
    this.grader = grade
    }
    }

ES6
http://kaikai12321.github.io/2021/03/10/ES6/
作者
Hou Kai
发布于
2021年3月10日
许可协议