当前位置:   article > 正文

vue 为什么组件的data要写成返回对象的函数_vue 组件data属性 为什么 是 函数返回对象

vue 组件data属性 为什么 是 函数返回对象

原因:对象为引用类型,当重用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Object的实例),引用地址不同,则不会出现这个问题

上面解释完,你可能还是不大清楚,下面我们举个简单的例子:

  1. // 1.对象方式(所有重用的实例中的data均为同一个对象)
  2. var data = {
  3. x: 1
  4. }
  5. var vm1 = {
  6. data: data
  7. }
  8. var vm2 = {
  9. data: data
  10. }
  11. vm1.data === vm2.data // true,指向同一个对象
  12. // 2.函数方式(所有重用的实例中的data均为同一个函数)
  13. var func = function () {
  14. return {
  15. x: 1
  16. }
  17. }
  18. var vm3 = {
  19. data: func
  20. }
  21. var vm4 = {
  22. data: func
  23. }
  24. vm3.data() === vm4.data() // false,指向不同对象

注意: 函数方式中data都指向同一个函数,但这个函数每次的返回值都是一个新的对象,可以尝试如下(效果相同)

  1.  {x:1} === {x:1} // false
  2.  new Object({x:1}) === new Object({x:1}) // false

 

欢迎关注、点赞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/616775
推荐阅读
相关标签
  

闽ICP备14008679号