请教一下 Object.defineProperty 的应用场景

2020-09-04 17:20:03 +08:00
 frankkai

除了 vue 的双向数据绑定,这个 api 有更多的应用场景吗?

前端 V 友们都来说说呗,不胜感激

1643 次点击
所在节点    前端开发
7 条回复
louieliu
2020-09-04 18:11:00 +08:00
现在就直接用 Proxy 配合 Reflect 了
Mutoo
2020-09-04 19:20:58 +08:00
一般是框架或构建工具用来定义一些特殊接口(例如只读)时使用,例如 webpack 对 export/import 的实现。平时很少会用。

感觉 defineProperty 的出现更多是为 es6+ 实现向下兼容,方便对 es5 进行 polyfill 实现新功能打基础。
murmur
2020-09-04 19:33:52 +08:00
有的时候可以拿来对变量进行监控,绑定 getter setter 方法打断点

当然框架用是最多的,能 polyfill 到 ie 上的都能用 defineProperty
frankkai
2020-09-04 20:42:08 +08:00
@murmur 对变量做监控确实可以,感觉也算是一个埋点:在 setter 里统计某个变量的次数,做一些日志上报之类的
frankkai
2020-09-04 20:43:28 +08:00
@louieliu Proxy 配合 Reflect 弥补了 Object.defineProperty 那些不足呢
frankkai
2020-09-04 20:48:29 +08:00
@Mutoo 做到只读属性的话 设置 writable 和 configurable 为 false 感觉就行了 这样有点像冻结对象属性
只读的特殊接口指的是啥 不太懂
aec4d
2022-02-08 10:33:46 +08:00

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

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

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

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

© 2021 V2EX