美文网首页Vue.js我爱编程
[JS][Vue]学习记录之引用传递和值传递

[JS][Vue]学习记录之引用传递和值传递

作者: 未来行者 | 来源:发表于2018-04-12 23:53 被阅读669次

demo地址
因为一些特殊事情,断更了一天,可耻......还是要继续学习!

引用传递

在上一篇文章的demo中,我们从父组件向子组件传递了一个数组.这里引出一个概念,在vue中,数组和对象传递都是引用传递.举个栗子,在myComponent组件中我们给它加上一个点击事件,来改变users的值:

<template>
  <div class="myComponent">
    <ul>
      <li v-for="user in users">
        {{user}}
      </li>
    </ul>
    <button @click="deleteUser">删除一个人</button>
  </div>
</template>

<script>

export default
{
      name: 'myComponent',
        // props:["users"],
        props:{
          users:{
              type : Array,
              required : true
          }
        },

      data(){
        // noinspection JSAnnotator
  return{

      }
   },
  methods:{
    deleteUser:function (){
      this.users.pop();
    }
  }
}
</script>

这里给一个pop()函数来弹出最后一个user.
同时在app.vue中,我们再加上一个myComponent:

<template>
  <div id="app">
    <app-header v-bind:info="info"></app-header>
    <myComponent v-bind:users="users"></myComponent>
    <myComponent v-bind:users="users"></myComponent>
    <app-footer v-bind:info="info"></app-footer>
  </div>
</template>

然后会发现,当我们点击这个button之后,两个myComponent的值都会减少.这就能说明数组的传递是引用传递.

值传递

同理,我们可以去证明,凡是String,boolean,number类型的传递都是值传递.
这里贴一下header的代码,前提是headerfooter都从app.vue传入了一个info字符串:

<template>
  <header>
    <h1>
      {{title}},{{info}}
      </h1>
    <button @click="changeInfo">改变info</button>
  </header>
</template>

<script>
export default
{
  name: 'app-header',
    props:{
      info:{
        type : String
      }
    },
    data(){
  // noinspection JSAnnotator
  return{
    title : '这是一个header'
  }
},
  methods:{
  changeInfo:function (){
    this.info = 'info 被改变了';
  }
}
}
</script>

我们会发现,当我们点击button之后,headerinfo确实改变了,但是footer没有改变.这里就证明,此时字符串传递是值传递.

相关文章

  • [JS][Vue]学习记录之引用传递和值传递

    demo地址因为一些特殊事情,断更了一天,可耻......还是要继续学习! 引用传递 在上一篇文章的demo中,我...

  • JS是按值传递还是按引用传递?

    JS是按值传递还是按引用传递? 按值传递 VS. 按引用传递 探究JS值的传递方式 按共享传递 call by s...

  • vue 参数的使用

    记录vue参数的使用 使用js方法进行传递 使用vue的属性方式去进行传递 注:使用 :to 传值,需要在URL中...

  • Day12-Java

    值传递和引用传递 值传递是值的拷贝, 引用传递是引用的拷贝 String 类型是引用类型, new String ...

  • Java所有参数-对象引用及基本类型值--都是值传递

    前言 当前主要存在两种传递方式,值传递和引用传递,先简单介绍值传递和引用传递值传递(pass by value)是...

  • Java中的参数传递

    为了便于理解,会将参数传递分为按值传递和按引用传递。按值传递是传递的值的拷贝,按引用传递传递的是引用的地址值,所以...

  • js的值传递和引用传递

    我们知道js中那些是值类型,那些是引用类型,这是必须要搞清楚。JavaScript中的值类型:数值、布尔值、nul...

  • 第四题

    写出输出值,并写出原因 按值传递和按引用传递 函数的参数的按值传递的 js之所以有这样设计,是因为:按值传递的类型...

  • JavaScript深入之参数按值传递

    除了按值传递、引用传递,还有第三种传递方式 —— 按共享传递(JS应该是共享传递,没有所谓的引用传递) 共享传递是...

  • js中经典问题讲解

    1.传递参数是按值传递还是按引用传递? 苏墨橘的回答JS是按值传递还是按引用传递? 2.执行环境及作用域 《jav...

网友评论

    本文标题:[JS][Vue]学习记录之引用传递和值传递

    本文链接:https://www.haomeiwen.com/subject/jsrqkftx.html