美文网首页es6
learn-es6常用语法(5)

learn-es6常用语法(5)

作者: crayona | 来源:发表于2019-11-20 16:17 被阅读0次

    对象新增方法

    对象的key value相同的话可以简写成一个      let obj={'a':a}   =>改写成  let  obj={a}

    方法也可以简写  key值和function的名字相同  let obj={"fn1":function fn1(){}}          let obj={fn1(){}}

    --------------------

    Object.is()  判断两个值是否相等   ***和三等相同但可以检测出NaN  

    Object.is(NaN,NaN) true

    ----------------------

    合并对象 Object.assign()   如果后面对象与前面对象属性相同   后面的覆盖前面的

    ---------------------

    把方法定义到prototype上

    Object.setPropertypeOf(要绑定的对象,方法)  

    let obj={name:1}

    let fn={fn1(){ console.log(1)}}

    Object.setPrototypeOf(obj,fn)  //现在obj可以调用fn1方法

    Object.getPropertypeOf 读取一个对象的原型对象

    Object.keys()

    Object.values()

    Object.enteries()

    Object.fromEntries(obj)  enteries的反向方法


    promise 异步队列

    es6中用来同一规范异步行为   res代表成功运行异步值后   rej代表失败后运行什么方法

    1创建的时候就会立即执行2一旦开始就不能停止3只有用catch才能捕获错误

    缺点  :当你需要处理一个队列时 ,需要一层一层的往下then

    如果用all调用 ,因为方法是并行的,不能确定函数的执行顺序

    Promise.all([fn1(),fn2(),fn3()]).then((result)=>{  console.log(result)})

    all 按照队列里最慢的去执行

    race谁最快按照谁先执行  也是并行的  不能判断函数的执行顺序


    构造器函数(单线程多函数协调配合执行)

    形式:function 后面加*号   function的名字(){}

    构造器函数可以执行一部分就停止的函数,每次调用执行函数的一部分,

    可以多个函数配合协同作战

    构造器函数(多个函数配合协同作战)


    proxy  拦截器  

    "拦截"对元素的行为  增删  (类似于class中的set与get) 

    let P1=new Proxy({}操作的对象,{

    get:(target,propertyname)=>{

    if(propertyname="123"){

    alert('不能获取')

    return false;}

    }

    }})

    console.log(obj['123']) //不能获取


    reflect   为“操作对象”而提供的新的api

    Object.defineProperty(target,key,value)     给对象定义一个新的属性  或者对已有属性重新赋值

    Object.keys()  循环现有对象的key值

    如果没有获取到值会报错   reflect解决其报错问题  直接返回false

    reflect  reflect代替Object下的一系列方法 ,其方法与proxy的方法相同


    js模块化  module

    import 与export的都是一个对象  所以要用export {name} 来输出

    ------------------

    一次性加载js中的所有方法

    定义js:functin add(){}

              function remove(){}

              export {add,remove}                                  

    如果变成export default {remove,add}  引用时可以用“自定义的名字”  import  lalala  from "上面js的路径"

    引用:import * as fangfa from '上面js的路径'          

    使用:fangfa.add();

    -----------------

    相关文章

      网友评论

        本文标题:learn-es6常用语法(5)

        本文链接:https://www.haomeiwen.com/subject/kbrgictx.html