用了快一年 vue,语法也是 ES6,但一直没用到过 Proxy 与 Reflect,看见说明文档给了一堆示例,这俩东西的使用场景有哪些?多的话,我再去研究下
1
noe132 2019-02-22 17:16:12 +08:00 via Android
proxy 类似于元编程,可以 override 一些操作,如 get set hasOwnProperty 可以简单的对某个对象进行代理封装
reflect 就是字面意思反射。只不过 js 已经有反射了,reflect 提供的是更加统一一致的 api。反射的概念一般在 java 很常见,用来动态加载类和调用方法。在 js 里的反射就是点操作符 |
2
zzNucker 2019-02-22 17:18:41 +08:00
要涉及到框架或者安全方面编程的时候用的比较多,一般不太用到。
|
3
shintendo 2019-02-22 17:28:37 +08:00
Vue 3 内部就是用 Proxy 实现响应式系统
|
4
akatquas 2019-02-22 17:33:05 +08:00 via iPhone
你们 Symbol 有实际项目使用吗?
|
5
azh7138m 2019-02-22 17:36:53 +08:00 via Android
@noe132 元编程可不是这个意思。。。
proxy 很好用,主要是 getter 和 setter 可以操作之前不存在的 key,类似 php 的那些对象上的魔术方法,之前一个小 demo 也用了 proxy,不用的话有些东西不好实现 https://github.com/muzea-demo/random-data/blob/master/lib.mjs#L84 比如我想控制一些变量的值的时候,就只能用 proxy 去实现(当然,提前把所有的变量名算出来也行) |
6
rabbbit 2019-02-22 17:39:55 +08:00
就用过一次, 用来把 Dom 和对象封装成数组
ttps://github.com/Aaron-Bird/ivy/blob/master/src/main.js#L172 |
7
ayase252 2019-02-22 17:46:33 +08:00 via iPhone
通过劫持 ComponentDidMount,实现某个页面打开的时候打一个 log。
|
8
meteor957 2019-02-22 17:53:46 +08:00 via Android
没用过
|
9
ChefIsAwesome 2019-02-22 17:58:28 +08:00
曾经尝试拿这东西造一种看着跟正常对象一样,其实是 immutable 的数据。发现速度挺慢,内部挺绕,还不如直接搞个有 get set 方法的对象好。
|