ES6中你不知道的事

一,变量提升

  • let

特点:1,局部作用域;2,不能变量提升;3,不能重新声明

  • const

特点:1,局部作用域;2,不能重复声明;3,不会变量提升;4,声明必须赋值;5,赋值后不能修改;6,建议大写

二,解构

定义:把对象或者数组解析为单独的变量;

数组解构:用 “,” 分割;可以跳过;......剩余值;给默认值;有顺序的

例如:let [a,,b,,c,d=10,......res] = arr;

对象解构:变量名和对象的键名保持一致;无序的

例如·:let {age,name,eye=2}=obj;

三,字符串

  • 字符串模板:``包裹字符串,${变量};

优点:语义清晰,可以包含特殊字符,保留换行

  • 字符串检测

        includes 是否包含

        startsWith 是否开头包含

        endsWith 是否结尾包含

  • 常见方法

repeat(n)把字符串重复n次

padStart(len,sub)把字符串用n填充len长度

padEnd(len,sub)从后面开始填充

四,函数

  • 箭头函数

1,=>前是参数,=>后是执行语句也是返回值

2,参数如果不是一个,需要用()包裹

3,执行语句如果不是一行用{}包裹

4,返回值如果是对象字面量形式用()包裹

5,箭头函数中的this指向函数的上一层作用域的this

  • 默认参数

function  fn(a=10){}

  • 不定参

function  fn(...arg){}

  • 扩展参

调用参数的时候,把数组扩展后当参数传递
fn(...arr);

五,对象

  • 属性简写

  •  动态简写

  • 函数简写

(say(){})

  • 继承

 六,类

特点:

  1. 用class声明,本质是function
  2. construction构造
  3. extends继承
  4. new实例化
  5. class Cat extends Animal{
       construction(name,color){
          super(name);
          this.color=color;
       }
       say(){}
    }
    var c1 = new Cat("小猫咪","五彩斑斓的黑")

七,模块化

  • <script type=''module''>
  • 导出
  1. export{name} 导出一个
  2. export{name,fun} 导出多个
  3. export default Cat 导出默认
  • 导入
  1. import{name}from url
  2. import{name,fun}from url
  3. import Cat from url 导入默认
  4. import Cat{name,fun}from url 合并默认
  5. import * as utils from url 导入所有as关键字
  • 文件打开必须是http协议,不能是D:  C:file协议

 八,Set集合

  • 初始化
var s1 = new Set([1,2,1])
  • 利用set特性去重
arr= [...new Set(arr)]
  • 常用方法
  1.  add添加
  2. delete删除
  3. clear清空
  4. has检查是否有
  5. size长度

 九,WeakSet集合

  • 内容不重复
  • 内容必须是引用对象
  • new WeakSet([...])

 十,Map 图

  • 类似于对象
  • 特点:键名可以是任意类型
  • 初始化:
new Map{[["abc",18],["def",20]}
  • 方法
  1.  set添加
  2. get获取
  3. has检测
  4. size长度
  5. delete删除
  6. clear清空

十一,WeakMap 

  • 特点:key都是弱引用

十二,可迭代对象 

  • 可以被for of遍历
  1.  String 字符串
  2. Array数组
  3. Set集合
  4. Map图
  • keys()键集合 
  • values()值集合
  • entries()键与值的集合
  • for of
for(let v of arr){
  console.log(v)
}

十三,异步与等待 asnc与await

async  function say(){
   return "abc"
}
say()
   .then(res=>{})
  • await
  1.  只能在async函数里使用,当函数遇到await等待wait结果,再往下执行
async  function doit(){
   var m1 = await say("msg",1000)
   var m2 = await say("msg2",2000)
   return m1+m2
}
doit()
.then(res=>consol.log(res)

 十四,Symbol

  • 符号:不重复;不可修改

var sym = Symbol(“标识”)

  •  可以是sym作为唯一的key或者标识符 {sym:“abc”}

十五,迭代器 

 可迭代对象都拥有迭代器(可以被for of遍历的对象都是可迭代对象)  String Array  Set  Map

       获取迭代对象
var itr = arr [Symbol.iterator]()   

 通过next方法进行迭代
itr.next()

(value:"XXX",done:false)
......
(value:undefined,done:true)

十六,生成器

普通函数前添加*,通过yield关键来控制生成,最终通过函数执行 返回一个可迭代元素

function *range(start,end,step){
   while(start<step){
     yield start
     start+=step
   }
}

生成一个1-100的可迭代元素
var list = range(1,100);
转换为数组
list=[...list]
当函数执行到yield关键字会等待

 十七,代理 Proxy

对原对象操作的挟持

obj = {
  msg :''你好 Vue‘’
}

o.msg 会执行get方法
o.msg = "abc" 会执行set方法
我们可以在get和set方法里面做一些判断劫持等其他操作

console.log(o.msg)
获取o的msg值  执行o里面的get方法  return obj[''msg'']

o.msg="abc
设置o里面msg值  执行o代理的set方法
obj.["msg"]="abc" 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值