美文网首页
ES6复习(Proxy Promise)

ES6复习(Proxy Promise)

作者: AriaHuo | 来源:发表于2019-10-12 10:03 被阅读0次

1.Proxy

1.Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”

2.Proxy 支持的拦截操作一览

get(target, propKey, receiver):拦截对象属性的读取,比如proxy.foo和proxy['foo']。方法用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象、属性名和 proxy 实例本身(严格地说,是操作行为所针对的对象),其中最后一个参数可选

set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = v或proxy['foo'] = v,返回一个布尔值。可以接受四个参数,依次为目标对象、属性名、属性值和 Proxy 实例本身,其中最后一个参数可选

has(target, propKey):拦截propKey in proxy的操作,返回一个布尔值。

deleteProperty(target, propKey):拦截delete proxy[propKey]的操作,返回一个布尔值。

ownKeys(target):拦截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for...in循环,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而Object.keys()的返回结果仅包括目标对象自身的可遍历属性。

getOwnPropertyDescriptor(target, propKey):拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。

defineProperty(target, propKey, propDesc):拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值。

preventExtensions(target):拦截Object.preventExtensions(proxy),返回一个布尔值。

getPrototypeOf(target):拦截Object.getPrototypeOf(proxy),返回一个对象。

isExtensible(target):拦截Object.isExtensible(proxy),返回一个布尔值。

setPrototypeOf(target, proto):拦截Object.setPrototypeOf(proxy, proto),返回一个布尔值。如果目标对象是函数,那么还有两种额外操作可以拦截。

apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如proxy(...args)、proxy.call(object, ...args)、proxy.apply(...)。可以接受三个参数,分别是目标对象、目标对象的上下文对象(this)和目标对象的参数数组

construct(target, args):拦截 Proxy 实例作为构造函数调用的操作,比如new proxy(...args)。

2.Promise

1.Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大

2.Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去

3.Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数

function timeout (ms) {

return newPromise( (resolve,reject)=>{

setTimeout (resolve,ms,'done');});}

timeout(100).then((value)=>{

console.log(value);});

相关文章

  • ES6复习(Proxy Promise)

    1.Proxy 1.Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(me...

  • 【ES6】Proxy/Promise

    11 Proxy proxy 用于修改某些操作的默认行为,可以理解为一种拦截外界对目标对象访问的一种机制,从而对外...

  • ES6 Proxy和Reflect

    前言: ES6一直在改进之前版本的一些写法,比如Promise,async/await,Proxy,Reflect...

  • ES6——Reflect 与 Proxy

    ES6 之 Proxy 介绍深入实践 ES6 Proxy & Reflect 1.Proxy Proxy 可以对目...

  • ES6--Promise

    学过ES6的同学大概都知道Promise,可想而知Promise在ES6中很重要。 Promise对象代表了未来将...

  • Promise.done(),Promise.finally()

    es6 Promise.done(),Promise.finally()promise对象的finally函数为什...

  • ES6 Promise

    ES6 promise 的一些常用方法 Promise.prototype.then() Promise.prot...

  • ES6异步:Promise

    #Promise迷你书通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

  • 你了解vue3.0响应式数据怎么实现吗?

    从 Proxy 说起 什么是Proxy proxy翻译过来的意思就是”代理“,ES6对Proxy的定位就是targ...

  • ES6 Promise 异步编程方案

    为什么使用 Promise ? Promise 是 ES6 提出的异步编程方案 ! ES6 之前,如果我们都是通过...

网友评论

      本文标题:ES6复习(Proxy Promise)

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