Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • CSS

  • JavaScript

  • 工具

  • Vue

  • antdv踩坑记录

  • Vue3

    • vue3 setup语法糖
    • vue3实现v-model
    • vue3组件通信
    • vue3使用pinia及pinia持久化
    • vue3使用$nextTick
    • Proxy的实际应用场景
    • ref和reactive的实现原理
    • vue3生命周期
    • 在vue文件外使用store
    • vue3中的编译器宏
    • vue3 ts中拼接本地图片地址
    • 数值滚动实现
    • setup语法糖下自定义组件name
    • vue-router4配置动态路由问题No match found for location with path
    • vue3挂载全局弹窗
    • vue3+vite配置环境变量问题
    • Vue3监听createApp创建的子组件事件
    • vue3源码学习——vue3核心模块
  • 前端
  • Vue3
kros
2023-06-11

Proxy的实际应用场景

JavaScript的Proxy是一种强大的特性,它允许你拦截并自定义对象的底层操作。下面是一些JavaScript Proxy的实际应用示例:

# 1、数据绑定

vue3就是利用proxy对属性进行监听,相对于vue2使用的Object.defineProperty更全面

# 2、数据验证和过滤

通过使用Proxy,你可以拦截对对象属性的访问,并在访问之前对数据进行验证和过滤。

let tempObj = { name: '张三', sex: '男' }
let obj = new Proxy(tempObj, {
  set: function(target, prop, value) {
    if (prop === 'sex') {
      // 赋值时校验属性值
      if (['男', '女'].includes(value)) {
        target[prop] = value
      } else {
        throw new Error(`属性sex不支持当前值:${value}`)
      }
    } else {
      target[prop] = value
    }
  }
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 3、只读属性

将对象设置为不可变的,即使尝试修改对象的属性也会被拦截。这对于保护对象的完整性和安全性非常有用。

# 4、缓存与日志

使用Proxy来创建一个缓存层,以避免频繁的计算或网络请求。当访问某个属性时,先检查缓存是否存在该属性的值,如果存在则直接返回缓存的值,否则进行计算或请求,并将结果存入缓存。 同时也可以将所有对对象的访问记录日志,对开发和调试很有用

上次更新: 2025/09/05, 8:09:00
vue3使用$nextTick
ref和reactive的实现原理

← vue3使用$nextTick ref和reactive的实现原理→

最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev