我是靠谱客的博主 冷艳路人,这篇文章主要介绍data为什么是一个函数,现在分享给大家,希望可以做个参考。

  • 根的实例对象data可以是对象也可以是函数(根实例是单例), 不会产生数据污染
  • 组件实例对象data必须为函数,目的是为了防止多个组件实例对象之间共用一个data,产生数据污染。采用函数的形式,initData时会将其作为工厂函数都会返回全新data对象
  • Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了, javascipt只有函数构成作用域, data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响

例子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
const MyComponent = function() {}; MyComponent.prototype.data = { a: 1, b: 2, } const component1 = new MyComponent(); const component2 = new MyComponent(); component1.data.a === component2.data.a; // true; component1.data.b = 5; component2.data.b // 5

如果两个实例同时引用一个对象,那么当你修改其中一个属性的时候,另外一个实例也会跟着改;
两个实例应该有自己各自的域才对,需要通过下面的方法来进行处理。

复制代码
1
2
3
4
5
6
7
8
9
10
const MyComponent = function() { this.data = this.data(); }; MyComponent.prototype.data = function() { return { a: 1, b: 2, } };

这样么一个实例的data属性都是独立的,不会相互影响了.

最后

以上就是冷艳路人最近收集整理的关于data为什么是一个函数的全部内容,更多相关data为什么是一个函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(122)

评论列表共有 0 条评论

立即
投稿
返回
顶部