Proxy可以实现什么功能?

在vue3中通过Proxy来替换原本的Object.defineProperty实现数据响应式。

Proxy是ES6中新增的功能,它可以用来自定义对象中的操作。

let p = new Proxy( target, handler)  handler用来自定义对象中的操作。

通过 Proxy 来实现数据响应式:

let onWatch = (obj, setBind, getLogger) => {let handler = {get(target, property, receiver){getLogger(target, property)return Reflect.get(target, property, receiver)},set(target, property, value, receiver){setBind(value, property)return Reflect.set(target. property, value)}}return new Proxy(obj, handler)
}let obj = { a: 1 }let p = onWatch(obj,(v, property) => {console.log(`监听到属性${property}改变为${v}`)},(target, property) =>{console.log(`'${property}' = ${target[property]}`)}
)
p.a = 2 // 监听到属性a变化
p.a // 'a' = 2

通过自定义set和get函数的方式,在原本的逻辑中插入逻辑函数,实现了在对对象任何属性进行读写时发出通知。在get收集依赖,在set派发更新。Proxy可以完美监听到任何方式的数据改变,唯一缺陷就是浏览器的兼容性不好。

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

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

相关文章

自动化测试用例设计实例

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则: 1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

Windows如何部署Jenkins

一、简介 Jenkins 是国际上流行的免费开源软件项目,基于Java 开发持续集成工具,用于监控持续重复的工作,提供一个开放的易用的软件平台,使软件的持续集成自动化,大大节约人力和时效。 二、Java JDK 访问 OpenLogic…

Threejs学习05——球缓冲几何体背景贴图和环境贴图

实现随机多个三角形随机位置随机颜色展示效果 这是一个非常简单基础的threejs的学习应用!本节主要学习的是球面缓冲几何体的贴图部分,这里有环境贴图以及背景贴图,这样可以有一种身临其境的效果!这里环境贴图用的是一个.hdr的文件…

C语言入门_Day7 逻辑运算

目录: 前言 1.逻辑运算 2.优先级 3.易错点 4.思维导图 前言 算术运算用来进行数据的计算和处理;比较运算是用来比较不同的数据,进而来决定下一步怎么做;除此以外还有一种运算叫做逻辑运算,它的应用场景也是用来影…

C语言:字符函数和字符串函数

往期文章 C语言:初识C语言C语言:分支语句和循环语句C语言:函数C语言:数组C语言:操作符详解C语言:指针详解C语言:结构体C语言:数据的存储 目录 往期文章前言1. 函数介绍1.1 strlen1.…

kube-prometheus 系列1 项目介绍

Prometheus 已经成为云原生监控的事实标准。整个生态包含诸多组件,为了简化安装部署和配置高可用等,社区开发了kube-prometheus项目。接下来用一系列文章介绍一下相关配置。 项目简介: kube-prometheus 是一个基于 Kubernetes 部署的 Prometh…

WebStrom 前端项目Debug

1. 正常启动前端项目 2. 配置webStrom的JavaScript Debugger 点击Edit Configurations添加avaScript Debug填写URL 为项目启动路径配置要Debug的浏览器-remote-allow-origins* (最重要,否则唤起的是一个about:blank空白页面) 3. 启动Debug模…

于vue3+vite+element pro + pnpm开源项目

河码桌面是一个基于vue3viteelement pro pnpm 创建的monorepo项目,项目采用的是类操作系统的web界面,操作起来简单又方便,符合用户习惯,又没有操作系统的复杂! 有两个两个分支,一个是web版本,…

二维码智慧门牌管理系统:打造社区管理新格局

文章目录 前言一、精准数据支持的实现二、便捷办事流程的提升三、多元化服务渠道的拓展四、高效管理和优质服务的提供 前言 在科技的推动下,社区管理正在迎来一场革命性的变革。其中,二维码智慧门牌管理系统崭露头角,成为了社区管理的得力助…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改 在闭包中的…

物联网智慧安防实训综合实训基地建设方案

一、系统概述 物联网智慧安防实训综合实训基地是一个为学生提供综合实践、培养技能的场所,专注于物联网技术与智慧安防应用的培训和实训。通过物联网智慧安防实训综合实训基地的建设和运营,学生可以在真实的环境中进行实践训练,提高其物联网技…

spring aop 的适用场景

Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的机制,它可以通过在应用程序中定义横切关注点(Cross-cutting Concerns),将这些关注点模块化,并将它们与核心业务逻…

CentOS下卸载node.js

目录 一、卸载 npm二、卸载node三、删除残留文件1. /usr/local/lib 下删除所有 node 和 node_modules文件夹2. /usr/local/include 下删除所有 node 和 node_modules 文件夹3. /usr/local/bin 下删除 node 的可执行文件 一、卸载 npm sudo npm uninstall npm -g 二、卸载node…

嵌入式入门教学——C51(中)

嵌入式入门教学汇总: 嵌入式入门教学——C51(上)嵌入式入门教学——C51(中)嵌入式入门教学——C51(下) 目录 七、矩阵键盘 八、定时器和中断 九、串口通信 十、LED点阵屏 十一、DS1302实…

Flink CDC系列之:Oracle CDC Connector

Flink CDC系列之:Oracle CDC Connector 一、依赖关系二、SQL 客户端 JAR三、设置Oracle1.对于非 CDB 数据库2.对于CDB数据库四、创建Oracle CDC table五、连接器选项六、局限性七、可用元数据八、特征1. Exactly-Once处理2.启动阅读位置3.单线程读取4.数据流源九、数据类型映射…

Spring 6.0官方文档示例(24): replace-method的用法

一、原始bean定义 package cn.edu.tju.study.service.anno.domain;public class MyValueCalculator {public String computeValue(String input) {return "you inputted: " input;}// some other methods... }二、replace bean定义 package cn.edu.tju.study.serv…

LED驱动型IC芯片的原理介绍

一、LED驱动器是什么 LED驱动器(LED Driver),是指驱动LED发光或LED模块组件正常工作的电源调整电子器件。由于LED PN结的导通特性决定,它能适应的电源电压和电流变动范围十分狭窄,稍许偏离就可能无法点亮LED或者发光效…

设计模式十七:迭代器模式(Iterator Pattern)

迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种访问聚合对象(例如列表、集合、数组等)中各个元素的方法,而无需暴露其内部表示。迭代器模式将遍历元素和访问元素的责任分离开来&#xff0…

CentOS系统环境搭建(十三)——CentOS7安装nvm

centos系统环境搭建专栏🔗点击跳转 CentOS7.9安装nvm 文章目录 CentOS7.9安装nvm1.安装2.刷新系统环境3.查看所有node4.安装Node.js版本5.查看已安装版本号6.使用指定版本7.设置默认版本8.验证 在我们的日常开发中经常会遇到这种情况:手上有好几个项目&…

TCP粘包

TCP粘包(TCP packet fragmentation and reassembly)是指在使用TCP协议进行数据传输时,发送方发送的多个小的数据包(消息)在网络传输过程中会被合并成一个大的数据包,或者一个大的数据包被拆分成多个小的数据…