es6

learn-es6常用语法(5)

2019-11-20  本文已影响0人  crayona

对象新增方法

对象的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();

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

上一篇下一篇

猜你喜欢

热点阅读