IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue中的计算属性computed -> 正文阅读

[JavaScript知识库]Vue中的计算属性computed

Vue中的计算属性computed

总结计算属性:
1.定义:要用的属性不存在,要通过已有的属性计算得来(必须是已有的属性,不能是已有的变量或者已有的数据,因为它可能会脱离vue的管理,比如放在vue外边的变量)
2.原理:底层借助了Object.defineproperty方法提供的getter和setter

? 3.get 函数什么时候被执行

(1).初次读取时会执行一次

(2).当依赖的数据发生改变时,会被再次调用

? 4.**set函数什么时候被执行?**当fullName被修改时候

? 5.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便

? 6.备注

(1).计算属性最终会出现在vm上,直接读取使用即可

(2).如果计算属性要被修改,那必须写set函数去响应修改,且set中引起计算时依赖的数据发生

<body>

  <!-- 准备一个容器 -->

    <div id="root">
    
    姓:<input type="text" v-model="firstName"> <br><br>
    
    名:<input type="text" v-model="lastName"> <br><br>
    
    <!--计算属性中的get()被调用了几次,是一次,因为在第一次调用之后get被放在了缓存中-->
    
    全名:<span>{{fullName}}</span>
    
    全名:<span>{{fullName}}</span>
    
    全名:<span>{{fullName}}</span>
    
    全名:<span>{{fullName}}</span>


    <!--错误写法,计算属性fullName被使用时候,会自动调用里面的get(),拿到get的返回值然后放在vm上-->
    <!-- 全名:<span>{{fullName.get()}}</span> -->

  </div>

</body>

<script type="text/javascript">


  Vue.config.productionTip = false  //阻止vue在启动时生成生产提示

  const vm = new Vue({

    el: '#root',
    
    //vm._data中有firstName,有lastName,但是没有fullName,它是计算出来的,是计算属性
    
    data: {
    
      firstName: '张',
    
      lastName: '三'
    
    },
    
    computed: {
    
      fullName: {
    
        //get的作用:当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
    
        //get什么时候被调用:1.初次读取fullName时;2.所依赖的数据发生变化时(就比如fullName中所依赖的数据firstName和lastName改变时候,get就又会被调用)
    
        get() {
          //此处的this是vm
          // console.log(this);
          console.log('get被调用了');
          return this.firstName + '-' + this.lastName
    
        },
    
        //但是set方法不是必须写的,只要非常确定不需要修改值时候,就不需要写
        set(value) {
    
          console.log('set', value);
    
          const arr = value.split('-')
    
          this.firstName = arr[0]
    
          this.lastName = arr[1]
    
        }
    
      }
    
    }

  })

</script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:40:27  更:2021-12-23 15:42:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:27:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码