ES6学习笔记2

Proxy(代理器用来拦截某些操作)

要使Proxy起作用必须对Proxy实例进行操作

let proxy=new Proxy(target,handle);//target拦截的目标对象,handle拦截行为
proxy.a="b"

常见的拦截行为对象方法:

  1. get(target,proerty,proxy);参数为目标对象、属性名和 proxy 实例本身
let pro=new Proxy({},{
  get:function(target,property,proxy){
    retrun "test";
  }
})
let obj=Object.create(pro);//obj对象的原型是pro对象
obj.a// "test"
  1. set(target,prop,value,proxy);拦截属性的赋值操作;依次为目标对象、属性名、属性值和 Proxy 实例本身
let pro=new Proxy({},{
  set:function(target,prop,value){
    if(value<200){return value}
    else{ throw("error")}
  }
});
pro.a=200;//报错
  1. apply();拦截函数的调用、call和apply操作;
    接受三个参数,分别是目标对象、目标对象的上下文对象(this)和目标对象的参数数组。
let pro=new Proxy(function(){return "yoyoyo"},{
apply:function(target,ctx,args){
  return "this test"
}});
pro();//this test
  1. has(target,key);判断对象是否具有某个属性时的拦截,参数:目标对象、需查询的属性名;
let pro=new Proxy({"a":1,"b":2},{
  has:function(target,key){
    if(key==="a"){return false}
    return key in target
  }
})
"a" in pro//false
  1. construct(target,args)用于拦截new命令,必须返回一个对象;
    还有deleteProperty(),defineProperty等;

Reflect对象:可以拿到Object底层的方法命令,成其函数操作行为;

'assign' in Object;
Reflect.has(Object,'assign');

其静态方法:Reflect对象的方法与Proxy对象的方法一一对应;

Promise对象:异步编程解决方案,其对象存了未来事件的结果;

Promise 新建后就会立即执行

let p=new Promise(function(resolve,reject){
//...oper code
if(1){
resolved("value")
}
else{
rejected("value")
}
});

p.then(function(){console.log("resolved")}).catch(function(){console.log('error')})

实例方法:finally()不管promise对象最后状态如何都会执行,then(),catch();
静态方法:Promise.all()用于将多个promise对象合成一个新的promise;

const p=Promise.all([p1,p2,p3]).then(...)

Promise.race()也是将多个合成一个,不同的是总的promise对象状态是由第一个发生状态变化的相关;
Promise.resolve() , Promise.reject() 将现有对象转为 Promise 对象

Generator函数 ——异步编程解决方案

Generator是一个状态机,生成遍历器对象的函数;
Generator的特征是:

function * gt({
  yield "test"  //yield用于产出不同状态
  yield "yoyo"
  return "ssss"
})
let G=gt();//遍历器对象;

遍历器对象上调用next(),来指向下一个状态,yield表达式提供了暂停函数执行的标志且只能在Generator函数里面执行
yield表达式本身没有返回值,可以给next()带参数来挡住上一个yield表达式的返回值

function* gt(){
  for(let i=0;true;i++){
    let flag=yield i;
    if(flag){ i=-1; }
  }
}
let g=gt();
g.next();gt.next(true);

实例方法:return()返回给定的值结束Generator函数
es6中异步编程的方法:

  • 回调函数,- promise , - Generator, - 发布/订阅,- 事件监听
async函数----Generator函数的语法糖

async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await
async函数优势:

  • 无需调用next(),内置执行器
  • async函数返回值是promise;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 本文为阮一峰大神的《ECMAScript 6 入门》的个人版提纯! babel babel负责将JS高级语法转义,...
    Devildi已被占用阅读 1,964评论 0 4
  • ES6 学习笔记,如有错误,欢迎指正。 笔记只记录了一些个人认为需要记住的知识点。 参考:ECMAScript 6...
    _1633_阅读 424评论 1 1
  • 什么是ES6? ECMAScript 6.0 是继ECMAScript 5.1 之后 JavaScript 语...
    多多酱_DuoDuo_阅读 1,069评论 0 4
  • ES6特性归纳 ES的全称是ECMAScript,它是JavaScript的规格,JS是ES的一种实现。ES还有J...
    FWHeart阅读 559评论 0 4
  • 认真学习了一遍ES6,发现很多很好用的功能。学习资料:《ECMAScript 6 入门》 好啦,继续下半部分的学习...
    VioletJack阅读 346评论 0 1