<script type="text/javascript"> let num = 16 let person = { name:"張三", //age:18, sex:'男' } Object.defineProperty(person,'age',{ /*value:16, enumerable:true,//控制屬性是否能被遍歷 writable:true,//控制屬性是否可以被修改 configurable:true,//控制屬性是否可以被刪除*/ //有人讀取age屬性時,get函數(getter)就會被調用。且返回值就是return的值 get(){ console.log('讀取值了') return num }, //有人修改age屬性時,set函數(setter)就會被調用。且返回值就是return的值 set(val){ console.log('修改值了,且值為',val) num = val; } }) console.log(person)
1.Vue中的數據代理 通過vm對象來代理data對象中屬性的操作(讀/寫) 2.Vue中數據代理的 好處 更加方便的操作data中的數據 3.基本原理: 通過object.defineProperty()把data對象中的所有屬性添加到vm上 為每一個添加到vm上的屬性,都指定一個getter和setter 在getter/setter內部去操作data中對應的屬性