defineProperty和Proxy
2024-10-20 16:29:48
Proxy JS标准内置对象
const p = new Proxy(target, handler)
创建一个对象的代理:
let obj = {
a: {
b: {
c: 1
}
}
}
let proxy = new Proxy(obj, {})
console.log(proxy);
浏览器打印
Object.defineProperty()
直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
Object.defineProperty(obj, prop, descriptor)
重写一个对象:
const object1 = {}; function df(o) {
Object.keys(o).forEach(key => {
Object.defineProperty(object1, key, {
set() {
object1[key] = obj[key];
if (typeof obj[key] === 'object') {
df(obj[key])
}
}
})
})
return o
}
let proxy1 = df(obj)
console.log(proxy1)
浏览器打印:
使用Object.defineProperty() 重写目标对象需先知道属性(prop),所以在VUE项目中,初始化后,给对象新增属性无法实现响应性。
Proxy代理只需要知道对象本身即可。对代理对象的操作会转发到源对象。
最新文章
- PHP JSON
- linux命令:df
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
- javascript_basic_04之节点、元素
- codevs1183泥泞的道路
- ajax转换成json参数
- 菜鸟程序员之Asp.net MVC Session过期异常的处理
- HTML内容整理
- javascript判断浏览器的版本
- Trianglify – 五彩缤纷的 SVG 背景图案
- Tomcat目录介绍以及运行时寻找class的顺序
- ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
- (转)Java程序员应该了解的10个面向对象设计原则
- c++ 显示调用dll
- Java微信公众平台开发之OAuth2.0网页授权
- ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方案
- PyQt5实现界面跳转
- 浅谈MVC中的service层(转)
- MVC ScriptBundle自定义排序。
- JVM中垃圾收集算法总结