Vue2.0 - 06. 数据代理-Object.defineProperty 2022-10-15 前端►vue2 JavaScript, defineProperty, vue2, 数据代理 评论 字数统计: 558(字) 阅读时长: 2(分)vue2.0 基础学习目录1234567891011121314151617let user={name:'odinsam',sex:'男'}Object.defineProperty(user,'age',{value:20,enumerable:true,writable:true,configurable:true}){name: 'odinsam', sex: '男', age: 20}for(let key in user){ console.log(`user的key-value key:${key} value:${user[key]}`) }// user的key-value key:name value:odinsam// user的key-value key:sex value:男//user的key-value key:age value:20user.age=3030user.age30delete user.agetruefor(let key in user){ console.log(`user的key-value key:${key} value:${user[key]}`) }user的key-value key:name value:odinsamuser的key-value key:sex value:男 Object.defineProperty的 get set 用法123456789101112131415161718let number = 20let user={name:'odinsam',sex:'男'}Object.defineProperty(user,'age',{ get(){ return number } set(value){ number=value } }){name: 'odinsam', sex: '男', age: 20}for(let key in user){ console.log(`user的key-value key:${key} value:${user[key]}`) }// user的key-value key:name value:odinsam// user的key-value key:sex value:男//user的key-value key:age value:20user.age=3030user.age30delete user.agetruefor(let key in user){ console.log(`user的key-value key:${key} value:${user[key]}`) }user的key-value key:name value:odinsamuser的key-value key:sex value:男 原始的数据代理 obj2通过数据代理获取obj1的x属性1234567891011//原始的数据代理let obj1 = { x: 10 };let obj2 = { y: 10 };Object.defineProperty(obj2, 'x', { get() { return obj1.x; }, set(value) { obj1.x = value; }}); vue中的数据代理123456789101112131415161718192021<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>06.数据代理-Object.defineProperty</title> </head> <body></body> <script> /* vue中的数据代理 1. 通过vm对象来代理data对象中属性的操作 getter setter 2. 更加方便的操作data中的数据 3. 通过Object.defineProperty()把data对象中所有的属性添加到vm上 4. 为每一个添加到wm上的属性都指定 getter、setter方法 5. 在getter、setter内部操作data中对应的属性 6. vm._data中的属性不是数据代理而是数据劫持,通过数据劫持监听数据改变从而render页面 */ </script></html>vue2.0 进阶学习的目录完整代码可以在 GitHub