【ES6】阮一峰ES6学习(六) Proxy(一)

news2024/11/17 19:46:38

Proxy

    • 1. 前言
    • 2. 使用
      • 1. get()方法
      • 2. set()方法
    • ==未完待续==

1. 前言

es6中全新设计了一个叫Proxy的类型,Proxy这个词的原意是代理,用在这里表示由它来”代理“某些操作,可以译为”代理器“,Proxy就是专门为对象设置访问代理器的,无论是读还是写都要经过代理,通过proxy就能轻松监视对象的读写过程。

2. 使用

如何使用Proxy监视对象的读写过程呢?定义一个person对象,对象当中有一个name属性和height属性,然后通过new Proxy的方式为person创建一个代理对象

Proxy的构造函数需要2个参数,一个是需要代理的目标对象,另一个是代理的处理对象,在这个处理对象中可以通过get()方法监视对象属性的访问,通过set()方法监视对象设置属性的过程

const person={
    name:'zzz',
    height:185
}
const proxy=new Proxy(person,{
    get(){//监视对象属性的访问

    },
    set(){//监视对象设置属性的过程

    }
})

1. get()方法

get()方法可以接收两个参数,第一个是代理的目标对象,第二个是访问的属性名,分别把它们打印出来

const proxy=new Proxy(person,{
    get(target,property){// 目标对象  访问的属性名
        console.log(target,property);
    },
    set(){

    }
})
console.log(proxy.name);

在这里插入图片描述
get()方法正常的逻辑应该是判断代理目标对象中是否存在访问的属性名,存在就返回对应的值,不存在就返回undefined或者一个默认值

get(target,property){
    return property in target? target[property]:'default'
},

//分别打印存在的属性和不存在的属性
console.log(proxy.name); //zzz
console.log(proxy.age); //default

2. set()方法

set()方法接收三个参数,第一个是代理的目标对象,第二个是要写入的属性名,第三个是要写入的属性值,分别在方法里将这三个参数打印出来并在外边添加一个属性

set(target,property,value){
    console.log(target,property,value);
}

proxy.sex='男'

控制台就会打印出写入的属性和属性值
在这里插入图片描述

set()方法正常的逻辑应该是为代理目标设置指定属性,在设置之前先做一些数据校验,例如属性名为height,那么那么就要判断它的是否是一个数字,不是就抛出错误

set(target,property,value){
    if(property === 'height'){ //判断属性名是否为height
        if(!Number.isInteger(value)){//判断是否为整数
            throw new TypeError(`${value} is not an int`)
        }
    }
    target[property]=value
}

未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1775. 通过最少操作次数使数组的和相等】

来源:力扣(LeetCode) 描述: 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。 每次操作中,你可以选择 任意 数组中的任意一个整数&…

1978-2021年全国GDP平减指数计算模板

全国GDP平减指数计算公式可以给定基期,自动计算平减指数! 1、时间区间:1978-2021年 2、计算说明:GDP平减指数名义GDP/实际GDP 实际GDP又称不变价GDP,名义GDP就是公布的数字,它没有考虑通货膨胀因素。 给…

【Unity】UnityWebRequest学习——Unity中的HTTP网络通信

目录UnityWebRequest 简介HTTP网络通信流程HTTP 三点注意事项HTTP请求HTTP响应例子使用Unity内置的UnityWebRequest类进行HTTP请求(GET)使用BestHTTP插件进行HTTP请求(GET)使用Unity内置的UnityWebRequest类进行HTTP请求&#xff…

主成分分析/因子分析与线性映射

数据降维,包括主成分分析PCA和因子分析FA,都离不开特征值和特征向量。今天先不细说特征值和特征向量,先说一说理解数据降维的一个关键概念,线性映射。 看到csdn里很多文章讲特征值与特征向量时,都会先讲讲线性映射&am…

绿色荧光试剂Fluorescein Tyramide,荧光素酪胺,210236-90-1

CAS编号为210236-90-1的化学试剂其英文名为Fluorescein Tyramide,其中文名称为荧光素酪胺,它是一种绿色荧光染料。 该荧光试剂的分子量是495.49 ,分子式为C29H21NO7。该试剂质量控制为95%,试剂的储存条件为: -20℃长期…

维二糖-聚乙二醇-酰基,Cellobiose-PEG-Hydrazide,酰基-PEG-纤维二糖

维二糖-聚乙二醇-酰基,Cellobiose-PEG-Hydrazide,酰基-PEG-纤维二糖 中文名称:纤维二糖-酰基 英文名称:Cellobiose-Hydrazide 别称:生物素修饰纤维二糖,生物素-纤维二糖 酰基(acyl group),是…

[附源码]计算机毕业设计框架的资产管理系统设计与实现Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux学习笔记——初识Linux

01、初识Linux 1.1、操作系统概述 1、学习目标: 了解操作系统的作用了解常见的操作系统 2、硬件和软件 我们所熟知的计算机是由硬件和软件组成的。 硬件:计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称。(看的见、摸得…

基于jsp+mysql+SSM动物园门票预订网站系统-计算机毕业设计

项目介绍 现代化动物园管理系统日趋复杂,传统的以手工方式为主的管理操作模式,局限性日趋突显:宣传手段单一,管理效率低,系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统使用mysql,独立运行,…

保姆级 | Python设置py2和py3共存

0x00 前言 在使用一些 python 脚本时,有些库只能用 python2.X 版本进行使用,而有些脚本却需要 python3.X 版本进行。如果不能在一个主机中设置 py2 和 py3 共存,那么会对自身的工作造成极大的不便。 0x01 环境说明 python-2.7.18python-3.11…

ATTCK-T1592-001-收集受害者主机信息-硬件

0X01 基础信息 具体信息详情ATT&CK编号T1592-001所属战术阶段侦察操作系统windows10 企业版 LTSC创建时间2022年11月7日监测平台火绒安全、火绒剑、sysmon 0X02技术原理 在入侵受害者之前,攻击者可能会收集有关受害者主机硬件的信息,这些信息可以在…

作为测试开发岗的面试官,我都是怎么选人的?

最近一段时间面试了不少人,主要是一些测试开发岗,中高级的初级的也都有;也有一些偏业务测试岗的候选人。总结出了一些方法论,或者说更多的是个人作为面试官所遵守的一套面试准则。 1.什么是面试? 面试不仅仅是你问我…

什么是数字签名?(数字签名与信息摘要又有什么关系?)

在上一篇博文【什么是信息摘要】结尾我给出了一个结论:“看来单纯的信息摘要技术还不能保证信息的完整性,即不能确定信息是否被篡改”,由此并引出了“数字签名”的概念。上一篇博文的地址在下面,没看的小伙伴可以看一下&#xff0…

CSDN第13次竞赛题解与总结

前言 2022/12/7 CSDN第13次竞赛「人民邮电出版社 & CSDN」联合主办。 本次奖品为《计算之魂》: 系统地讲解了计算机科学的精髓,不仅有助于了解计算机科学,更有助于了解 IT 产业的技术特点、培养一些特殊的思维方式、掌握信息时代特殊的…

开源web自定义表单有哪几个特点?

目前,市场正在蓬勃发展中,作为企业,采用传统表单的弊端也逐渐显现出来,面临比较大的问题就是办公效率得不到提升。在各行各业正积极筹备朝着数字化方向转型的背景下,采用开源web自定义表单可以弥补传统表单弊端&#x…

windows系统“彻底”隐藏任务栏

项目概况及目标 因某项目所需,要实现win10系统上任务栏的“彻底”隐藏。此处任务栏隐藏要求无键盘操作无法唤出。 方案一、任务栏设置 我们都知道,在任务栏设置中可以通过更改自动隐藏任务栏选项来实现任务栏的隐藏显示。 但是该方案的隐藏会在鼠标经…

论文速读系列一:VoteNet、CBGS、BirdNet、StarNet、STD

如有错误,恳请指出。 参考网上资料,对一些经典论文进行快速思路整理 文章目录1. VoteNet2. CBGS3. BirdNet4. StarNet5. STD参考网上资料,对一些经典论文进行快速思路整理 1. VoteNet paper:《Deep Hough Voting for 3D Object …

【正点原子FPGA连载】第三十章 基于OV5640的PL以太网视频传输实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三十章 基于OV…

TextMeshPro源码移植-替换掉PackageManager

因为工作需要,使用类似美术字的效果 TextMeshPro支持各种效果,效能也可以(到底这个可以到底是多可以,效率有多高,反正都是传说,哥也不知道),唯一缺点就是不支持多语言 只要你的项目…

Pandas使用手册

Pandas是一款快速,强大,灵活且易于使用的开源数据分析和操作工具, 建立在Python编程语言之上。 Pandas 前言Pandas是一款快速,强大,灵活且易于使用的开源数据分析和操作工具,建立在Python编程语言之上。 一…