ES6 day3

9) Promise
  对异步操作进行封装。
  状态:待定、成功、失败

  1) 构造函数
    let p = new Promise((resolve,reject)=>{
      
    })

  2) 静态方法
    Promise.xxx

  3) 实例方法
    Promise.prototype.xxx

  ajax  
    GET /carousel/findAll HTTP/1.1
    Authorization:XXWEREAWFEWAFAEW
10) Symbol
  函数,无法使用new来调用,每次执行都可以产生式一个唯一的值(基本数据类型),这个值用来作为属性名。
  let s1 = Symbol()
  let s2 = "name"
  let obj = {
    [s1]:"terry",    // 神秘的唯一值:"terry"
    [s2]:"tom" ,     // name:"terry"
    s3:"jacky"       // s3 :"jacky"
  }
  obj[s1]
  obj.name
  obj.s3
  1. Symbol() 函数
    用来产生唯一值
  2. Symbol(flag) 
    flag字符串,表示标识
  3. Symbol.for(flag)
  4. Object.getOwnPropertySymbols()
    可以获取某个对象中所有的symbol属性名
  5. 系统内置Symbol
    1) Symbol.hasInstance
      所有的构造函数都内置这么个方法,当instanceof的时候会调用
      let obj = {
        [ Symbol.hasInstance]:function(o){
          return false
        }
      }
      let o = {}
      {} instanceof obj;
    2) Symbol.iterator
      当迭代对象的时候会被调用 for-of
      for(let o of arr){}
11) 集合
  是对数组和对象的拓展
  1. Set
    不可以存放相同的值,不可以通过索引来访问。Set是一种特殊的map
    let arr = [1,2,3,4,5,1,2,3]
    let arr = ['terry','larry']
    1) 构造函数
      new Set()
    2) 原型
      Set.prototype.size
      Set.prototype.add()
      Set.prototype.delete()
      Set.prototype.clear()
      Set.prototype.keys()
      Set.prototype.values()
      Set.prototype.entries()
      Set.prototype.forEach()
  2. Map
    键值对,键可以为任意数据类型;
    Map可以提供额外的api

    购物车(家政)
      goods 
        id    name    price
        fbm = {1   北京方便面  2}
        kqs = {2   怡宝矿泉水  2.5}
      let shopcar = new Map();
      shopcar.set(1,1)
      shopcar.set(2,3)

    如何将一个对象转换为map?
    1) 构造函数
      let map = new Map([[],[]])

    2) 原型方法
12) 代理
  1. 对象 setter/getter
    let obj = {}    // 目标对象
    let proxy = new Proxy(obj, {    // 代理
      set(target,key,val){
        target[key] = val;
      },
      get(target,key){
        return target[key]
      }
    })
    proxy.name = 'terry'    // 面向代理使用
  2. 函数 apply
    let foo = function(msg){console.log(msg);}
    let proxy = new Proxy(foo, {
      apply(target,that,args){
        target.apply(that,args)
      }
    })
  3. 构造函数 constructor
    let Person = function(name){this.name = name}

    let proxy = new Proxy(Person,{
      constructor(target,args){
        return new target(...args)
      }
    })

你可能感兴趣的:(node.js)