data是一个函数,但是返回的是一个对象,如果data直接是一个对象,会造成联动反应,即改变其中一个组件中的数据,其他的数据也会进行变化
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
</div>
<template id="cpn">
<div>
<h2>当前计数{{count}}</h2>
<button @click="pre()">+</button>
<button @click="nex()">-</button>
</div>
</template>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
Vue.component('cpn',{
template:'#cpn',
//这个data是一个函数,每次调用这个函数的时候,生成的是不同的对象
//可以这么理解,下面这三个对象的内存地址是不一样的,因此三个数据是互不影响的,不会产生数据联动
//通俗点来说,你可以理解为三个人互不影响
// function abc(){
// }
//var a1 = new abc();
//var a2 = new abc();
//var a3 = new abc();
data(){
return {
count : 0
}
},
methods:{
pre(){
count = this.count++
},
nex(){
count = this.count--
}
}
})
var app = new Vue({
el:'#app'
})
</script>
</body>
</html>
联动反应的结果(牵一发动全身)