17.数据代理.html 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <!-- 数据代理:
  11. Object.defineProperty()中getter和setter
  12. 通过一个对象可以去代理另一个对象 并且可以修改其属性
  13. -->
  14. </div>
  15. <script src="./vue.js"></script>
  16. <script>
  17. /**
  18. * 参数一:所要代理的对象
  19. * 参数二:所要代理的对象属性
  20. * 参数三:配置对象
  21. *
  22. */
  23. // let obj = {
  24. // name:"赵家锐",
  25. // age: 26,
  26. // sex:"男"
  27. // }
  28. // Object.defineProperty(obj,'sex',{
  29. // value: "女"
  30. // })
  31. // Object.defineProperty(obj,'age',{
  32. // value: 33
  33. // })
  34. // console.log(obj)
  35. let num = 10;
  36. let obj = {
  37. name: "雪怡",
  38. sex: "女"
  39. }
  40. Object.defineProperty(obj,'age',{
  41. get() {
  42. console.log("读取")
  43. return num;
  44. },
  45. set(value) {
  46. console.log("设置");
  47. num = value
  48. }
  49. })
  50. console.log(obj)
  51. console.log(obj.age)
  52. </script>
  53. </body>
  54. </html>