首页 > 其他分享 >Object.defineProperty 和new Proxy深度检测

Object.defineProperty 和new Proxy深度检测

时间:2024-04-13 10:55:25浏览次数:33  
标签:obj val pro Object newObj let Proxy key defineProperty

<!DOCTYPE html> <html lang="en">
<head>   <meta charset="UTF-8">   <meta http-equiv="X-UA-Compatible" content="IE=edge">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <title>Document</title> </head>
<body>   <!-- <input type="text" inputmode="email" accesskey="b" tabindex="1"> -->   <h3 id="firstname"></h3>   <h3 id="lastname"></h3>   <h3 id="age"></h3>   <script>     let user = {       name: '大海一',       age: 12,       user1: {         addr: '3333'       }     }     function _isObject(obj) {       return typeof obj === 'object' && obj !== null     }     function observeObjProperty(obj) {       for (let key in obj) {         let initVal = obj[key]         if (_isObject(obj[key])) {           observeObjProperty(obj[key])         }         Object.defineProperty(obj, key, {           get() {             console.log('get')             return initVal           },           set(val) {             console.log('set')             if (initVal !== val) {               initVal = val             }           }         })       }     }     function observeObj(obj) {       let proxy = new Proxy(obj, {         get(target, pro) {           console.log('get')           let newObj = target[pro]           if (_isObject(newObj)) {             newObj = observeObj(newObj)           }           return newObj         },         set(target, pro, val) {           console.log('set')           if (target[pro] !== val) {             target[pro] = val           }         }       })       return proxy     }     //observeObjProperty(user)     let userproxy = observeObj(user)   </script> </body>
</html>

标签:obj,val,pro,Object,newObj,let,Proxy,key,defineProperty
From: https://www.cnblogs.com/howhy/p/18132585

相关文章

  • 云场景下的代理重加密 Proxy Re-Encryption
    目录主页引言代理重加密代理重加密关键流程实践&应用总结参考资料主页个人微信公众号:密码应用技术实战个人博客园首页:https://www.cnblogs.com/informatics/引言2022年12月,人工智能迎来了一件大事,OpenAI的ChatGPT横空诞生,成为了现象级产品。如果说算力是人工智能的发动机,那......
  • 2-64. 使用 Unity 最新 ObjectPool API 制作对象池
    创建PoolManager修改EventHandler修改CropDetails修改Crop修改PoolManager修改CropDataList_SO修改PoolManager作业做好Tree02项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240411_1542......
  • jackson 使用jsonNode与objectNode 实现访问json对象, 操作json对象
    前情提要因为现有项目都用的阿里巴巴的fastjson做json串的序列化与反序列化,但是fastJson的漏洞太多了,经常处理扫描出来的漏洞时,需要升级版本,导致出现各种大大小小的bug,经过考究,决定使用jackSon做新项目的序列化与反序列化工作,那先看一下常用的场景:将对象转为js......
  • Java基础语法(14)| Object类、String类
    1.Object类Object类概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。例如:publicclassMyClass{ }publicclas......
  • objectarx中,修改标注数据之后无效的解决方法
    最近在写objectarx的标注,发现同样的代码,有些标注可以修改成功,但是有些修改之后无效。但是修改颜色之类的可以起效果。能修改成功的标注都是自定义的标注,用默认的标注修改之后就无效,并且返回值也都是eok。修改之后立马去查看标注的顶点数据,发现是修改之后的。但是在等到把对象关闭......
  • HAProxy适配openGauss使用指导书
    一、HAProxy简介HAProxy是一个开源的项目,其代码托管在Github上,代码链接如下:HAProxy代码链接。HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy实现了一种事件驱动,单一进程模型,此模型支持非......
  • HarmonyOS-基础之@Watch监听、@ObjectLink和@Observed
    1、Watch监听类似Vue中的数据监听,监听的数据发生了变化-->做啥事情父组件importChild07from'../components/Child07'@Entry@ComponentstructWatchExample{//watch可以监听组件状态State|Link|Provide......@State@Watch('update')obj:{a:n......
  • java 对List<Map<String, Object>>遍历
    在Java中,遍历List<Map<String,Object>>可以通过多种方式来实现。以下是一些常见的方法:使用for-each循环javaList<Map<String,Object>>list=//初始化你的Listfor(Map<String,Object>map:list){for(Map.Entry<String,Object>entry:map.entrySet()){......
  • java 对Map<String, Object>遍历
    在Java中,你可以使用多种方法来遍历Map<String,Object>。以下是一些常见的方法:使用Map.Entry和IteratorjavaMap<String,Object>map=newHashMap<>();//添加一些键值对到map中Iterator<Map.Entry<String,Object>>iterator=map.entrySet().iterator();while(iterator.ha......
  • PostgreSQL中json_build_object的用法
    在PostgreSQL数据库中,有时我们需要将多个字段合并成一个JSON对象,并将其用于保存或传输数据。json_build_object函数可用于将指定的键值对合并为一个JSON对象。该函数的语法如下:sqljson_build_object(keytext,valueany[,...])其中,key是JSON对象中的键名,可以是......