2020-11-23Vue组件中的data为什么必须是函数

<!DOCTYPE html>

<html lang="zh-CN">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>Document</title>

  <script src="https://cdn.staticfile.org/vue/2.6.12/vue.min.js"></script>

</head>

<body>

  <div id="app">

    <cpn></cpn>

    <cpn></cpn>

    <cpn></cpn>

  </div>

  <template id="cpn">

    <div>

      <h2>计数器:</h2>

      <p>{{counter}}</p>

      <button @click='btnClick'>+</button>

    </div>

  </template>

  <script>

    Vue.component(

      'cpn',{

        template: '#cpn',

        data(){

          return {

            counter: 0

          }

        },

        methods: {

          btnClick(counter) {

            this.counter++

          }

        }

      }

    )

    var vm=new Vue({

      el:'#app',

      data:{},

      methods:{}

    });

// ----------------------------

// let person = {

//   name: 'why',

//   age: 19,

//   height: 1.89

// }

// let obj1 = person

// let obj2 = person

// let obj3 = person

// obj1.name = 'kate'

// console.log(obj2);

// console.log(obj3);

// console.log(person);

// 由此证明,在script中同作用域一个对象被引用无论多少次,他们的值更新是同步的。

// -----------------------------------

function abc() {

  return {

    name: 'why',

    age: 19,

    height: 1.89

  }

}

let obj1 = abc()

let obj2 = abc()

let obj3 = abc()

obj1.name = 'kate'

console.log(obj1);

console.log(abc());

console.log(obj2);

console.log(obj3);

// 由此证明函数return 的对象,在引用时数据是独立的。

  </script>

</body>

</html>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容