Vue----计算属性

把computed中的方法当做属性使用,会返回一个数据供使用:

    new Vue({

    el:"",//关联界面元素

    data:{},//vm的数据源

    methods:{},//方法

    filters:{qq(){}},//过滤器

    computed:{xx(){}} //xx就是一个计算属性

   

})

//属性没有先后顺序

 

第一种用法:当做函数使用

    <div id='app'>

 

        <p>计算结果computed----{{age}}</p>

        <button @click="change">点击计算</button>

        <p>计算结果metheds----{{msg}}岁</p>

 

    </div>

    <script>

        new Vue({

            el:'#app',

            data: {

                birth:"1999-11-10",

                msg:0

               

            },

            methods: {

                change(){

                    this.msg= new Date().getFullYear()-new Date(this.birth).getFullYear()

                    return this.msg

                }

            },

            computed:{

                age(){

                    var number=new Date().getFullYear()-new Date(this.birth).getFullYear()

                    //将this.birth缓存起来,当this.birth修改后才会重新调用age函数

                    return number+"岁"

                },

             }

    })

    </script>

 

第二种用法:属性用法

    <div id='app'>

        <p>{{age2}}</p>

        <button @click="change">点击计算</button>

        <p>计算结果metheds----{{msg}}岁</p>

 

    </div>

    <script>

        new Vue({

            el:'#app',

            data: {

                birth:"1999-11-10",

                msg:0

               

            },

            methods: {

                change(){

                    this.msg= new Date().getFullYear()-new Date(this.birth).getFullYear()

                    return this.msg

                }

            },

            computed:{

                    age2:{

                    get(){

                        // return "取值"

                        return "出生日期"+this.birth

                    },//取值

                    set(){

                        return "存值"

                    }//存值

                }

            }

    })

    </script>

 

 

计算属性和方法的区别:(面试)

计算属性会把使用到的data中的属性缓存起来,防止页面发生大量重复计算,提升js 运行效率,如果计算属性中使用到的data中那部分数据变了才会重新调用计算属性methods方法没有计算结果缓存起来,data任何数据发生改变,方法都会被重新调用一遍 方法常常是作用的事件使用,计算属性常常是动态计算结果时使用

 

 

补充:关于计算属性 函数什么情况下调用

//计算属性使用时当做属性使用

//计算属性设计时当做函数设计(就像es6中的属性)

//当计算属性的函数中使用到的data中的数据发生变化时,计算属性就会重新执行并刷新UI

//1.如果是修改了data中监听的某个的属性值 计算属性就会运行

//2.如果是修改了data中监听的某个属性值内部的数据,计算属性就不会重新运行

//比如:计算属性使用的是data中的一个数组,某个交互把数组内部的某个下标的值改了,但是这个数组没有改变,就不会触发计算属性

//3.解决2的办法1:把修改后的数组重新赋值给data,让引用发生变化,来触发计算属性

//3.解决2的办法2:赋值 JSON.parse(JSON.stringfy(data))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值