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] } })