经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JSJS库框架 » JavaScript » 查看文章
vue实现双向绑定的简单原理: defineProperty
来源:cnblogs  作者:曾经的水哥  时间:2018/9/25 20:08:55  对本文有异议
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>vue双向绑定的原理测试</title>
  9. </head>
  10.  
  11. <body>
  12. 手写一个简单双向绑定<br />
  13. <input type="text" id="model"><br />
  14. <div id="modelText"></div>
  15. <script>
  16. /*
  17. * @Author: 曾经的水哥 https://www.cnblogs.com/cengjingdeshuige/
  18. * @Date: 2018-09-25 15:14:59
  19. * @Last Modified by: mikey.zhaopeng
  20. * @Last Modified time: 2018-09-25 15:15:50
  21. */
  22.  
  23. var user = {};
  24. var defaultName = '2222222222ssas'
  25. var model = document.querySelector("#model")
  26. var modelText = document.querySelector("#modelText");
  27. model.value = defaultName
  28. modelText.textContent = defaultName
  29. // 定义属性 监控改变
  30. Object.defineProperty(user, 'name', {
  31. get: function () {
  32. console.log('获取值')
  33. return defaultName
  34. },
  35. set: function (newValue) {
  36. console.log('设置新的值')
  37. defaultName = newValue
  38. model.value = newValue
  39. modelText.textContent = newValue
  40. }
  41. })
  42. model.addEventListener('keyup', function () {
  43. user.name = this.value
  44. console.log('取值')
  45. }, false)
  46. // 获取值
  47. console.log(user.name)
  48. </script>
  49. </body>
  50.  
  51.  
  52. </html>

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号