learn-es6常用语法(5)
对象新增方法
对象的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();
-----------------