Vue学习_计算属性

实现姓名案例:

1.插值语法实现姓名案例 

        直接从vm中读取。

<!doctype html>
<html lang="en" xmlns:v-model="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!--引入Vue-->
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>姓名案例_插值语法实现</title>
</head>
<body>
    <!--设置一个容器-->
    <div id = "root">
        姓:<input type="text" v-model:value="firstname" ></br></br> <!--input框设置初始值用value-->
        名:<input type="text" v-model:value="lastname"></br></br>
        姓名:<span>{{firstname}}-{{lastname}}</span>
    </div>
</body>
<script type="text/javascript">

    const vm = new Vue({
        el:'#root',
        data:{
            firstname:'张',
            lastname:'三',
        },
    })

</script>
</html>

2.methods方法实现姓名案例

        在methods方法中定义了一个fullname()方法,姓名通过fullname()方法获取到,其中的this指的是vue实例(如果是箭头函数,this指的就不是vue实例)

<!doctype html>
<html lang="en" xmlns:v-model="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!--引入Vue-->
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>姓名案例_methods方法实现</title>
</head>
<body>
<!--设置一个容器-->
<div id = "root">
    姓:<input type="text" v-model:value="firstname" ></br></br> <!--input框设置初始值用value-->
    名:<input type="text" v-model:value="lastname"></br></br>
    姓名:<span>{{fullname()}}</span>
</div>
</body>
<script type="text/javascript">

    const vm = new Vue({
        el:'#root',
        data:{
            firstname:'张',
            lastname:'三',
        },
        methods:{
          fullname(){
              return this.firstname + '-' + this.lastname;
          }
        },
    })

</script>
</html>

 3.计算属性实现姓名案例

       (1) 计算属性:是用已经写完的属性加工、计算,生成一个全新的属性。

        原理:底层借助了Object.defineproperty提供getter和setter(计算属性修改相应,大多数情况下,计算属性是不修改的)。

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

<!doctype html>
<html lang="en" xmlns:v-model="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!--引入Vue-->
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>姓名案例_计算属性实现</title>
</head>
<body>
<!--设置一个容器-->
<div id = "root">
    姓:<input type="text" v-model:value="firstname" ></br></br> <!--input框设置初始值用value-->
    名:<input type="text" v-model:value="lastname"></br></br>
    姓名:<span>{{fullname}}</span>
</div>
</body>
<script type="text/javascript">
    const vm = new Vue({
        el:'#root',
        data:{
            firstname:'张',
            lastname:'三',
        },
        computed:{

            fullname:{
                /*get有什么作用?当有人读取fullname时,get就会被调用,并且get的返回值就是fullname的返回值*/
                /*get什么时候读取?(1)初次读取fullname时;(2)所依赖的数据发生变化时(此处依赖firstname和lastname)*/
                get(){
                    return this.firstname + "-" + this.lastname
                },
                /*set什么时候调用?当fullname被修改时*/
                set(value){
                    const arr = value.split('-')
                    this.firstname = arr[0]
                    this.lastname = arr[1]
                }
            }
        }
    })
</script>
</html>

 

         (2)计算属性在只考虑读取,不考虑修改时可以简写,fullname可以当做函数来写,但是读取时不能当做函数读取。

computed:{
            fullname() {
                return this.firstname + "-" + this.lastname;
            }
        }

 

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值