首页 > 其他分享 >js代理和期约

js代理和期约

时间:2023-03-07 23:37:07浏览次数:39  
标签:console log const 代理 js proxy 期约 foo target

判断类型时除了用type of 还可以用instanceof

persion instanceof Object

for in 用于枚举对象中的非符号键属性,forin不能保证返回的对象

for of 用于遍历可迭代对象的元素

break 和continue 区别:break用于立即退出当前循环,强制执行循环后的下一条语句

continue 也用于立即退出循环


代理

定义:代理是目标对象的抽象,类似与c语言的指针,既可以用作目标对象的替身,又可以独立于目标对象。目标对象既可以直接被操作,也可以通过代理来操作,但直接操作会绕过代理施予的行为

const target={
     foo:'bar'
  }
   const hanaler={
     get:()=>{
       return 'intercepted'
    }
  }
   const proxy=new Proxy(target,hanaler)
   console.log(proxy.foo)
   console.log(target.foo)

使用代理的主要目的是可以定义捕获器(即上文的get())。捕获器是定义中的“基本操作拦截器”

捕获器参数可以接收三个对象分别为目标对象,要查询属性和代理对象

const target={
     foo:'bar'
  }
   const hanaler={
     get:(tarpTarget,property,receiver)=>{
       console.log(tarpTarget===target)//true
       console.log(property)
       console.log(receiver===proxy)//true
    }
  }
   const proxy=new Proxy(target,hanaler)
   console.log(proxy.foo)

可撤销代理:有时候需要中断代理对象与目标对象的联系

 const target={
    foo:'bar'
  }
  const hanaler={
    get:(tarpTarget,property,receiver)=>{
      console.log(tarpTarget===target)//true
      console.log(property)
      console.log(receiver===proxy)//true
    }
  }
   
   
  const {proxy,revoke}=Proxy.revocable(target,hanaler)
  console.log(proxy.foo)
  console.log(target.foo)
  revoke()
  console.log(proxy.foo)  

Promise

基础

let p =new Promise(()=>{})
  setTimeout(console.log,0,p)

期约状态机:

1、待定(pengding)

2、兑现(fulfilled ,有时候也称为“解决”,resolved)

3、拒绝(rejected)

通过执行函数控制期约状态

let p1=new Promise((resolve,reject)=>resolve())
setTimeout(console.log,2000,p1)
let p2=new Promise((resolve,reject)=>reject())
setTimeout(console.log,4000,p2)

标签:console,log,const,代理,js,proxy,期约,foo,target
From: https://www.cnblogs.com/guorunbin/p/17190177.html

相关文章

  • 什么是JSON
    前后端分离时代:后端部署后端,提供接口;串联前后端:JSON前端独立部署,负责渲染后端的数据。什么是JSON:JSON(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换......
  • 《设计模式之禅》Proxy_Pattern--代理模式
    代理模式这一章以潘金莲和王婆以及西门庆三人的故事作为程序的对象,下面就通过西门庆与潘金莲的故事来理解代理模式,途中车速过高,各位请系好安全带,发车喽!!!什么是代理模式呢?......
  • 如何使用 js 实现一个 ES6 中 class 的 extends 功能 All In One
    如何使用js实现一个ES6中class的extends功能AllInOneextendsclassHuman{constructor(name){this.name=name??'unknown';}getName(){......
  • 【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
    【选择排序算法详解】Java/Go/Python/JS/C不同语言实现 说明选择排序(SelectionSort)是一种简单直观的排序算法。跟冒泡、插入排序一样,它将数列分为已排序和待排序两个......
  • 从 JS 日期对象获取 YYYYMMDD 格式的字符串?
    我正在尝试使用JS将a转换dateobject为格式的字符串YYYYMMDD。有没有比连接Date.getYear(),Date.getMonth()和更简单的方法Date.getDay()?解答http://www.st......
  • PHP:json_encode序列化中文字符和json_decode反序列化object
    json_encode序列化<?php$name='你好';echojson_encode($name).PHP_EOL;//"\u4f60\u597d"echojson_encode($name,JSON_UNESCAPED_UNICODE).PHP_EOL;//"......
  • 【WPS JS教程】判断单元格是否为空值
    functionisUndefined(){ if(Sheets.Item("Sheet1").Range("A1").Value2==undefined){ Sheets.Item("Sheet1").Range("A2").Value2="A1是空值" }else{ Sheets.Item("......
  • JS格式化json并展示
    一、格式化json数据展示区域第1种:<divid="showJsonData1"contenteditable="true"style="width:100%;height:300px;border:1pxredsolid;">测试</div>第2种:<textareaid=......
  • ##Nginx反向代理负载均衡
    介绍: Ngin x是一个高性能的http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,特点:占有内存少,并发能力强。作为中间件具有如下功能:1、制作静态页面2、反向代理3、......
  • JSP内置对象
    简介JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。在JSP页面中,可以通过存取JSP内置对象实现与JSP页面和Servlet环境......