计算属性

82 阅读1分钟

计算属性

  • 定义:要是用的属性不存在。要通过已有属性计算得来
  • 原理:底层借助了Object.defineproperty方法提供的getter和setter
  • 优势:与methods实现相比,内部有缓存机制(复用)。效率更高。调试方便

使用

  • 计算属性最终会出现在vm上,直接读取使用即可
  • 如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时代依赖的数据发生改变时

代码实例

    <div id="root">
        性:<input type="text" name="" id="" v-model="firstName"><br><br>
        名:<input type="text" name="" id="" v-model="lastName"><br><br>
        全名:<span>{{fullName}}</span>
    </div>
    <script>
        Vue.config.productionTip=false
        const vm=new Vue({
        el:'#root', 
         data: { 
            // 在vue中data中的内容均视为属性
           firstName:"张",
           lastName:"三"
        },
        //当computed所依赖的数据发生改变时,computed才会改变
        computed:{
            fullName:{
                // get的作用:当有人读取fullName时,get就会被调用,并且返回值作为fullNmae的值
                // get什么时候被调用:1、初次读取fullName时。2、所依赖的数据发生变化时
                get(){
                    // console.log(this)
                    // 此处的this指向vm
                    return this.firstName+'-'+this.lastName
                },
                // set什么时候被调用:当fullName被修改的时候
                set(value){
                    console.log('set',value)
                    const arr=value.split('-')
                    this.firstName=arr[0]
                    this.lastName=arr[1]
                }
            }
            // 简写方式:只考虑读取不考虑修改时才可使用
            // // 此处的function代替的是get函数
            // fullName(){
            //     return this.firstName+'-'+this.lastName
            // }
        }
        })
    </script>