利用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

示例

你可能感兴趣的