Object.defineProperty()

110 阅读1分钟

vue进行数据双向绑定 用的主要原理为Object.defineProperty() 此方法不兼容ie8.

Object.defineProperty会在一个对象上定义一个新的属性;或者修改此对象的现有对象,返回此对象。

参数:

Object.defineProperty(obj,props,descriptor) obj:对象 props:属性 descriptor:描述(要定义或修改的属性描述符)

属性描述符:

  • 数据描述符 configurable:默认为false,含义是:是否能重新定义属性 enumerable:默认为false,含义是:此属性是否可枚举 value:初始值 writable:默认为false。含义是:是否可以修改属性值。

  • 访问描述符 get: 根据其它相关属性值,动态计算得到当前属性值。 set:监视当前属性值的变化,更新其它相关的属性值。

let obj={ firstName:"z" lastName:"xw" }

Object.defineProperty(obj,fullName, { get(){ return this.firstName + '-' + this.lastName }, set(value){ const names = value.split("-") this.firstName = names[0] this.lastName = names[1] } })