最近在狂补js的底层知识,在对象这一块,基本所有书都用了一定的篇幅去介绍属性特性和存取器特性4种属性特性value, writable,enumerable, configurable4种存取器特性get set enumerable, configurable那问题来了,这些东西在实际开发中有什么用呢感觉如果涉及到自己编写框架,可能会用这写功能去做一些限制,但如果是其他用途,很难想到什么需要去diy这些属性的地方,所以还想请大佬们指教另,ES6里已经有了proxy,那getter和setter还有什么用武之地吗
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
有什么用。
我实际开发中很少用这几个属性,但是并不意外着没用。es 提供属性特性,可以使对象操作的时候有更多的配置性。比如设置不可枚举,不可改变,不可删除的属性。当你遇到真实的场景,自然会派上用场。大可不必太纠结它在工作中的用场。get,set 跟 proxy 的理念是不同的。get, set 在面向对象编程中是比较重要的,算是提供了属 性的接口,而上述的属性则提供了属性访问的安全性。这个在其他,比如 c 语言中都是有的,算是 js 丰富自己的语言的严谨性。get,set 的用处很多,比如 vue,mobx 就用它处理了依赖收集,这个我就不必多说了,都是源码解析。
proxy 则是类似于元编程的思想,什么是元编程?知乎看一下怎么理解元编程?。也就是说 proxy 可以做很多 get,set 做不了的事情,初衷以及维度、高度是不同的。比如 get 只能知道对象属性被访问了,却不能收到任何的参数。
添加回答
举报
0/150
提交
取消
