Vue监视属性与计算属性

8 篇文章 0 订阅

        本周我们开始学习Vue,最近学习的内容中感觉监视属性和计算属性需要重点区别一下。

        监视属性:

                1、当被监视的属性发生变化时,回调函数自动调用,进行相关操作

                2、监视属性必须存在,才能监视,不存在也不会报错

                3、监视的两种方法:

                        1)new Vue时传入watch配置

                        2)通过vm.$watch监视

           :immediate:false决定初始时是否调用监视属性中相关函数,默认是false不调用,true为调用。deep:true决定是否深度监视,true为深度监视。为什么要设置深度监视呢?因为Vue中watch默认不监测对象内部值的改变(一层),配置deep:true可以监测对象内部值改变(多层),Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以,使用watch时根据数据的具体结构,决定是否采用深度检测。

        计算属性:

                定义:要用的属性不存在,要通过已有的属性计算得来

                原理:底层借助了Object.defineproperty方法提供的getter和setter

                get什么时候被调用:

                        1、初次读取fullName时。

                        2、fullName所依赖的值发生变化时

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

                备注

                1、计算属性最终会出现在vm上,直接读取即可

                2、如果计算属性要被修改,那就必须写set函数去响应修改,且set中要引起计算时依赖的数据发生变化(注意这里是计算属性被修改,修改后使依赖数据发生改变时调用set(),而不是改变依赖的数据时调用set())

        computed和watch之间的区别:

                computed能完成的功能,watch都可以完成。

                watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

                两个重要的小原则:

                        1、所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象

                        2、所有不被Vue管理的函数(定时器的回调函数、ajax的回调函数、Promise的回调函数)这样thiss的指向才是vm或组件实例对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值