为了账号安全,请及时绑定邮箱和手机立即绑定

js中对象的属性特性(property attribute)和存取器特性

js中对象的属性特性(property attribute)和存取器特性

www说 2019-03-01 18:22:48
最近在狂补js的底层知识,在对象这一块,基本所有书都用了一定的篇幅去介绍属性特性和存取器特性4种属性特性value, writable,enumerable, configurable4种存取器特性get set enumerable, configurable那问题来了,这些东西在实际开发中有什么用呢感觉如果涉及到自己编写框架,可能会用这写功能去做一些限制,但如果是其他用途,很难想到什么需要去diy这些属性的地方,所以还想请大佬们指教另,ES6里已经有了proxy,那getter和setter还有什么用武之地吗
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

可实现这样的效果,传送门
IFE传送门

查看完整回答
反对 回复 2019-03-06
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

  1. 有什么用。
    我实际开发中很少用这几个属性,但是并不意外着没用。es 提供属性特性,可以使对象操作的时候有更多的配置性。比如设置不可枚举,不可改变,不可删除的属性。当你遇到真实的场景,自然会派上用场。大可不必太纠结它在工作中的用场。

  2. get,set 跟 proxy 的理念是不同的。get, set 在面向对象编程中是比较重要的,算是提供了属 性的接口,而上述的属性则提供了属性访问的安全性。这个在其他,比如 c 语言中都是有的,算是 js 丰富自己的语言的严谨性。get,set 的用处很多,比如 vue,mobx 就用它处理了依赖收集,这个我就不必多说了,都是源码解析。

    proxy 则是类似于元编程的思想,什么是元编程?知乎看一下怎么理解元编程?。也就是说 proxy 可以做很多 get,set 做不了的事情,初衷以及维度、高度是不同的。比如 get 只能知道对象属性被访问了,却不能收到任何的参数。


查看完整回答
反对 回复 2019-03-06
  • 2 回答
  • 0 关注
  • 765 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号