4_响应式.html 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. //目标对象
  12. const user = {
  13. name: 'xiaoming',
  14. age: 20,
  15. friend: {
  16. name: 'xiaohong',
  17. age:18
  18. }
  19. }
  20. //把目标对象换成代理对象
  21. //参数1: user ---->目标对象
  22. //参数2: handler----->处理器对象,用来监视数据和数据的操作
  23. const proxyUser = new Proxy(user,{
  24. //获取目标对象的属性
  25. get(target,prop){
  26. console.log('get方法的调用')
  27. //反射对象
  28. return Reflect.get(target,prop)
  29. },
  30. //修改目标对象的属性值|为目标对象添加新的值
  31. set(target,prop,val){
  32. console.log('set方法的调用')
  33. return Reflect.set(target,prop,val)
  34. },
  35. //删除目标对象中的某个值
  36. deleteProperty(target,prop){
  37. console.log('delete方法的调用')
  38. return Reflect.deleteProperty(target,prop)
  39. }
  40. })
  41. //通过代理对象获取目标对象中的某个值
  42. console.log(proxyUser.name)
  43. //通过代理对象更新目标对象中的某个值
  44. proxyUser.name = 'xiaolan'
  45. console.log(user)
  46. //通过代理对象向目标对象添加一个新的值
  47. proxyUser.sex = '男'
  48. console.log(user)
  49. delete proxyUser.name
  50. console.log(user)
  51. //更新目标对象中某个属性对象的属性值
  52. proxyUser.friend.name = 'peiqi'
  53. console.log(user)
  54. </script>
  55. </body>
  56. </html>