利用Object.defineProperty实现数据双向绑定

首先介绍一下这个方法

Object.defineProperty(obj,prop,descriptor)
obj:需要被操作的目标对象
prop:目标对象需要定义或修改的属性
descriptor: 修改属性的描述符

简单来说,这个方法允许精确添加或修改对象的属性
对象里目前存在的属性描述符有两种主要形式:数据描述符存取描述符
数据描述符:一个拥有可写或不可写值的属性
存取描述符:由一对getter-setter函数功能来描述的属性
描述符必须是两种形式之一,两者不能同时存在

数据描述符

  • configurable:当且仅当该属性的值为true时,该属性描述符才能被改变,同时该属性也能从对应的对象上被删除。默认为false
  • enumerable:当该属性的值为true时,该属性才能够被枚举,默认false
  • value:为该属性的值,可以是任何有效的javascript值(对象,函数等)。默认undefined
  • writable:当该值为true时,该属性才能被赋值运算符改变。默认false

存取描述符

  • get:一个给属性提供getter的方法,如果没有则为undefined。改方法返回值被用作属性值。默认undefined
  • set:属性的setter方法,接受唯一参数,并将该参数的新值分配给该属性。默认undefined

示例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,218评论 6 13
  • 序 从最近的js入门系列的阅读量逐步递减,观众老爷的兴趣也不再能够接受一些细节性的地方深度挖掘,让我有了一些思考。...
    zhaolion阅读 1,646评论 5 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,041评论 19 139
  • 左岸江湖,开宗明义。 以何言道,方得精要; 以何成长,顺其自然; 以何助行,不急不慢; 以何为师,引入正途; 以何...
    潘志峰阅读 374评论 0 2
  • 立即下载 知乎日报 每日提供高质量新闻资讯 大误 · 我的故事只有一句话图片:编辑瞎说的 有哪些优秀的「一句话科幻...
    js92阅读 555评论 0 0