近况

最后再整理一下es6中的部分知识点,坦白说,我没有专门看网课学习ES6内容,不过看一些廖雪峰博客
学习vue网课的时候学到了很多这部分内容,所以索性记录一下,之前我写过es6的promise,模块化,let和const
模板字符串,Proxy和Reflect,接下来写es6的一些内容包括一些js其他知识点:

  • async和await关键字
  • generator函数
  • localStorage对象
  • this指向问题

async和await关键字

async和await是es7的关键字,使用他们可以实现用同步方式,执行异步操作,
async关键字标注的函数是异步函数,函数返回值是promise对象,可以使用 then 方法添加回调函数。

async function helloAsync(){
    return "helloAsync";
  }
  
console.log(helloAsync())  // Promise {<resolved>: "helloAsync"}
 
helloAsync().then(v=>{
   console.log(v);         // helloAsync
})

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,
等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。

await操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。
如果等待的不是一个Promise对象,则返回该值本身
如果一个 Promise 被传递给一个 await 操作符,await将等待Promise正常处理完成并返回其处理结果。

function testAwait (x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);		//x参数作为返回值返回
    }, 2000);
  });
}
 
async function helloAsync() {
  var x = await testAwait ("hello world");
  console.log(x); 
}
helloAsync ();
// hello world

generator函数

本想好好写一写,但肚子里没货,看了别人写的博客,写的太好了,我再怎么也写不出来
索性直接将链接拿过来,省的再去花时间水一篇垃圾博客,看大佬用generate实现一个async/await
掘金作者:林三心
点击文章:20分钟就能搞定的async/await原理!

localStorage对象

浏览器本地存储:localStorage,sessionStorage,这两个统称为webStorage
本地存储,指的是网站把一些数据存在了浏览器中,打开开发者选项,查看application即可看到数据
localStorage是window对象中的属性,所以可以直接使用localStorage对象

localStorage的操作

  • 存储数据

    /*
    	数据都是键值对形式,如果key重复存储,则值会替换,值只能是字符串,如果是数字,存到浏览器时也是字符串
    	如果存对象,不能直接存,使用stringify将对象中数据转成json字符串,
    		即{"name": "万一","age": "20"},直接存,则存的是[Object Object]
    */
    localStorage.setItem('msg',"wanyi")  
    const person = {name: '万一',age: 20}
    localStorage.setItem('wanyi',JSON.stringify(person))
  • 读取数据

    /*
    	如果读取是对象,结果长这样:{"name": "万一","age": "20"},
    		那就需要JSON.parse(localStorage.getItem("key")),解析一下json字符串,转成js对象
    	如果读取一个不存在的数据,则返回null
    */
    localStorage.getItem("key")
  • 删除数据

    localStorage.removeItem("key")
    localStorage.clear()	//删除localStorage上所有数据

与localStorage相似的是sessionStorage,上面的四个api,sessionStorage都是相同的使用
唯一的区别是:localStorage的数据,当浏览器关闭后,数据依然在,而如果是sessionStorage,浏览器关闭后,数据全部消失

this指向问题

this指向是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同,一般指向我们的调用者
下面是一张总结this指向图片: