vue中的插值表达式

  •  前言: 在html页面上只能展示字符串,console.log()打印出的也是字符串,意味着都会调用toString()方法,但实际上控制台展示的既有数组又有对象等类型,那是由于浏览器会进行处理
  • 用法: 使用在vue实例对象对应的DOM元素的html的正反标签之间
    • 支持匿名变量
    • 支持三目运算符
    • 数值
      • 支持四则运算
      • 支持比较运算符
      • 支持数值类型的一些内置方法
    • 数组
      • 支持数组的索引取值方法
    • 对象:支持对象的属性
    • window内置对象的Math的属性和方法:如果data中也有一个Math,那么vue对象的数据仓库优先级最高
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="./vue.js">script>
    <title>Documenttitle>
head>
<body>
    <div id="app">
        
        <p>{{ str }}p> 
        <p>{{ num + 'aaa'}}p>
        <p>{{ str.length }}p> 
        
        
        <p>{{ num }}p> 
        <p>{{ num+num1 }}p> 
        <p>{{ num > num1 }}p>  
        <p>{{ num.toFixed(2) }}p> 
        
        
        <p>{{ flag }}p> 
        
        
        <p>{{ arr }}p> 
        <p>{{ arr[3] }}p> 

        
        <p>{{ obj }}p> 
        <p>{{ obj.name }}p> 
        
        
        <p>{{ arg1 }}p> 
        <p>{{ arg2 }}p> 
        <p>{{ arg3 }}p> 

        
        <p>{{ num > num1 ? "是" : "否" }}p> 

    div>
    
    <script>
        new Vue({
            el:"#app",
            data:{
                str: '字符串',
                num: 1,
                num1:100,
                flag: true,
                arr: [1,2,3,4],
                obj:{
                    name:'tom',
                    age:20
                },
                arg1: null,
                arg2: undefined,
                arg3: NaN
            }
        })
    script>
body>
html>
  • 数据来源: 对应的vue实例对象的data仓库以及window内置对象的Math
  • 原理: 使用的是dom对象的innerText属性,所以不会做字符串解析
  • vue改写了js中的toString()方法
// undefined == null; 比较如果是同类型则直接对比,如果不是则转换成Boolean进行对比
// typeof数组 也是object
// 对象如果使用toString(),则转换成[object object]

function toString (val) {
  return val == null? ''//如果是null,则转换成空字符串
    : typeof val === 'object'//如果是对象,使用JSON.stringify转换成字符串
      ? JSON.stringify(val, null, 2)
      : String(val)//如果是两者都不是,则强转成字符串
}

转载于:https://www.cnblogs.com/wuliangfan/p/11161725.html

你可能感兴趣的:(vue中的插值表达式)