08-计算属性

1、computed 

//计算属性的本质就是一个方法,只不过,我们在使用的时候,
//把他们的名称直接当属性来用,而不是当方法来用,
//所以,使用的时候不需要带上()
//computed的属性可以被视为是 data 一样,可以读取和设值,
//因此在 computed 中可以分成 getter(读取) 和 setter(设值),
//一般情况下是没有 setter 的,computed 预设只有 getter ,
//也就是只能读取,不能改变设值。
    <div id="app">
        a=>:{{a}}

        <button @click="setB">修改B</button>
    </div>
<script>
        // computed  计算属性 :依赖其他属性值,并且 computed 有缓存,
        //只有他依赖的属性值发生改变,下一次computed 才会重新计算
        // 页面加载时 会主动执行一次
        // 它是同步的操作


        // 1. 支持缓存, 只有依赖的数据发生改变时发生改变
        // 2. 不支持异步
        // 3. computed 可以进行值得缓存
        // 4. 如果一个属性是由其他属性计算得来的, 
        //也就是说这个属性依赖其他属性, 及一对一或一对多我们通常使用computed
        // 5. computed 的属性值是函数 
        //默认会执行 get 方法 函数的返回值就是 
        //属性的属性值, 在computed 中每一个属性 
        //都有一个get 方法 和 set 方法( 必须return 才有值)
        
        //每一个计算属性都包含一个 getter与setter.
        //计算属性会默认使用getter函数,setter函数并不常用,
        //所以一般计算属性setter与getter都不写
        //setter函数内的形参是你修改的值(必须修改的是计算属性的属性值才有效)。


        var vm = new Vue({
            el: "#app",
            data: {
                b: 100,
                c: 200,
            },
            computed: {
                // a: function () {
                //     let num = this.b + this.c;
                //     console.log("this.b+this.c", num);
                //     return num;
                // }

                a: {
                    // 默认执行的是get
                    get: function () { // 读取
                        return this.b + this.c
                    },
                    set: function (val) { // 设置
                        console.log("val", val);
                        this.b = val;
                    }
                }


            },
            methods: {
                setB() {
                    this.b = 200;
                    this.a = 20;
                }

            }
        })
    </script>

上述运行结果:

如果是:

则上述运行结果:

 注解:由此可见,set函数的参数是,修改后的computed里的属性的值

 如果是:

 则上述运行结果是:

 又如果是:

则上述运行结果是:

注解:因为实际上this.b最终被赋值为20

 2、reduce

 

//reduce() 接收 4个参数
//第一个参数  (累计器)
//第二个参数  当前值
//第三个参数  当前索引
//第四个参数  源数组
<script>
const arr = [1,2,3,4,5];
const sum = arr.reduce(function(prev,cur,index,arr){
    console.log(prev,cur,index);
    return prev + cur;
});
console.log('arr:',arr,'sum:',sum);
</script>

 上述运行结果:

注解:用reduce对这个数组进行求和,共迭代了4次,函数迭代的初始值是1,也就是默认值(数组的第一项),prev的值是每次计算后的值(上一次的累计器值+上一次的当前值)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七色的天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值