ES6 的 Proxy 与 Reflect 使用的多吗?

2019-02-22 17:03:51 +08:00
 gaocc

用了快一年 vue,语法也是 ES6,但一直没用到过 Proxy 与 Reflect,看见说明文档给了一堆示例,这俩东西的使用场景有哪些?多的话,我再去研究下

2185 次点击
所在节点    问与答
9 条回复
noe132
2019-02-22 17:16:12 +08:00
proxy 类似于元编程,可以 override 一些操作,如 get set hasOwnProperty 可以简单的对某个对象进行代理封装

reflect 就是字面意思反射。只不过 js 已经有反射了,reflect 提供的是更加统一一致的 api。反射的概念一般在 java 很常见,用来动态加载类和调用方法。在 js 里的反射就是点操作符
zzNucker
2019-02-22 17:18:41 +08:00
要涉及到框架或者安全方面编程的时候用的比较多,一般不太用到。
shintendo
2019-02-22 17:28:37 +08:00
Vue 3 内部就是用 Proxy 实现响应式系统
akatquas
2019-02-22 17:33:05 +08:00
你们 Symbol 有实际项目使用吗?
azh7138m
2019-02-22 17:36:53 +08:00
@noe132 元编程可不是这个意思。。。

proxy 很好用,主要是 getter 和 setter 可以操作之前不存在的 key,类似 php 的那些对象上的魔术方法,之前一个小 demo 也用了 proxy,不用的话有些东西不好实现

https://github.com/muzea-demo/random-data/blob/master/lib.mjs#L84 比如我想控制一些变量的值的时候,就只能用 proxy 去实现(当然,提前把所有的变量名算出来也行)
rabbbit
2019-02-22 17:39:55 +08:00
就用过一次, 用来把 Dom 和对象封装成数组
ttps://github.com/Aaron-Bird/ivy/blob/master/src/main.js#L172
ayase252
2019-02-22 17:46:33 +08:00
通过劫持 ComponentDidMount,实现某个页面打开的时候打一个 log。
meteor957
2019-02-22 17:53:46 +08:00
没用过
ChefIsAwesome
2019-02-22 17:58:28 +08:00
曾经尝试拿这东西造一种看着跟正常对象一样,其实是 immutable 的数据。发现速度挺慢,内部挺绕,还不如直接搞个有 get set 方法的对象好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/537710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX