ES6学习 笔记(二)、Set(),Map(),Promise对象,模块化操作...

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:以下是本篇文章正文内容,下面案例可供参考

一、Set数据结构(里面放的都是数组,主要用于去重)

里面放的都是数组,主要用于去重

1、数组的 Set

   // 声明
   let arr = ['ysq','999','今天是冬至','1',1]
   let setArr = new Set(arr) // Set(5) {"ysq", "999", "今天是冬至", "1", 1}
  // 新增 add
  setArr.add('今天是冬至')  // Set(5) {"ysq", "999", "今天是冬至", "1", 1}
  // 查找 has
  setArr.has('今天是冬至')  // true
  // 长度 size
  setArr.size  // 5
  // 删除 delete(),clear()
  setArr.delete('今天是冬至') //  Set(4) {"ysq", "999", "1", 1}
  // 循环 遍历  for...of...  forEach
  // set 没有下标,下标就代表自己
  forlet [index,item] of setArr.entries(){
    console.log(index,item)
   // ysq ysq
   // 999 999
   // 1 1
   // 1 1
  }
  setArr.forEach((element,index) => {
      console.log(element,index)
      // ysq ysq
	  // 999 999
	  // 1 1
	  // 1 1
    })

2、对象的WeakSet

  let obj = {a:123,b:789}
  let obj2 = {a:123,b:789}
  let weakObj = new WeakSet()
  weakObj.add(obj)
  weakObj.add(obj2)
  console.log(weakObj)
   // WeakSet {{…}, {…}}  此时 obj和obj2是两个栈里面属于互不相关所以weakObj出现两个对象
   const obj = {a:123,b:789}
   const obj1 = obj
   const weakObj = new WeakSet()
   weakObj.add(obj)
   weakObj.add(obj1)
   console.log(weakObj) 
   // WeakSet {{…}}  此时obj1赋值等于obj属于同一个栈内

二、Map数据类型

由于ES5的Object提供的hash(键值对)里只能用字符串当作键,会有很大的限制。所以ES6提供了更接近hash结构Map

  let objMap = {
    a:'ysq',
    b:'sunshine'
  }
  let map = new Map()
  //  增 set
  map.set(objMap,'item')  // (key值,value值)
  map.set('ysq',objMap)  // Map(2) {{…} => "item", "ysq" => {…}}
  // 取值 get
  map.get(objMap)  // get(key值)  //item
  // 删  delete
  map.delete(objMap) //  Map(1) {"ysq" => {…}}
 // 查 has
 map.has('ysq')  // true
 // 长度 size
 map.size  // 1

三、promise对象

常见的异步请求有:1、接口调用,2、定时器,3、事件函数

注:在ES5中,当进行多层嵌套回调时,会导致代码层次过多,很难进行维护和二次开发;而且会导致回调地狱的问题。ES6中的Promise 就可以解决这两个问题。

1、promise的基本用法

  • 实例化一个Promise对象,Promise的构造函数中传递一个参数,这个参数是一个函数,该函数用于处理异步任务、
  • 传入两个参数:resolve和reject,分别表示异步执行成功后的回调函数,和异步执行失败后的回调函数
  • promise.then()处理返回结果
	let state = 1
	function abc(){
	 // model层的接口封装
	 return new Promise((resolve,reject)=>{
	  // 这里做异步请求 ajax接口请求,定时器异步请求
	   if(state==1){
	    resolve('')
	   }else{
	   reject('')
	  }
	 })
	}
	//  业务层 接口调用
	abc().then(data=>{
      console.log(data)
      }).catch(err=>{
       console.log(err)
	 })
//*************************转载例子******************************************//
  // 第一步:model层的接口封装
  const promise = new Promise((resolve, reject) => {
         // 这里做异步任务(比如ajax 请求接口。这里暂时用定时器代替)
         setTimeout(function() {
             var data = { retCode: 0, msg: 'qianguyihao' }; // 接口返回的数据
             if (data.retCode == 0) {
                 // 接口请求成功时调用
                 resolve(data);
             } else {
                 // 接口请求失败时调用
                 reject({ retCode: -1, msg: 'network error' });
             }
         }, 100);
     });

// 第二步:业务层的接口调用。这里的 data 就是 从 resolve 和 reject 传过来的,也就是从接口拿到的数据
    promise.then(data => {
          // 从 resolve 获取正常结果
          console.log(data);
      }).catch(data => {
          // 从 reject 获取异常结果
          console.log(data);
      });
	 

四、模块化操作

1、引入 import

2、输出 export ,export default

export 和export default区别:

export:多变量输出,可以输出多个变了

文件一、
export const a = 'ysq'
export const function add(){
  return a+b
}
文件二、(花括号)
import {a,add} from ',/,,'

export default:在文件中只能有一个文件输出

文件一、
export default var a = 'ysq'
文件二、(不需要花括号且import可以自由命名)
import adc from './..'

总结

提示:这里对文章进行总结:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值