• vue中的this指向问题


    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
        <script src="https://unpkg.com/vue@2.5.9/dist/vue.js"></script>
    </head>
    <div id="app" style=" 100%;height: auto;font-size:20px;">
        <p id="id1"></p>
        <p id="id2"></p>
    </div>
    <script type="text/javascript">
        var message = "Hello!";
        var app = new Vue({
            el:"#app",
            data:{
                message: "你好!"
            },
            created: function() {
              this.showMessage1();    //this 1
              this.showMessage2();   //this 2
            },
            methods:{
                showMessage1:function(){
                    setTimeout(function() {
                       document.getElementById("id1").innerText = this.message;  //this 3
                    }, 10)
                },
                showMessage2:function() {
                    setTimeout(() => {
                       document.getElementById("id2").innerText = this.message;  //this 4
                    }, 10)
                }
            }
        });
    </script>
    </html>
    

    第一个输出英文"Hello!”,第二个输出中文“你好!”。这说明了showMessage1()里的this指的是window,而showMessage2()里的this指的是vue实例。
    ※ 对于普通函数(包括匿名函数),this指的是直接的调用者,在非严格模式下,如果没有直接调用者,this指的是window。showMessage1()里setTimeout使用了匿名函数,this指向
    window。
    ※ 箭头函数是没有自己的this,在它内部使用的this是由它定义的宿主对象决定。showMessage2()里定义的箭头函数宿主对象为vue实例,所以它里面使用的this指向vue实例。

  • 相关阅读:
    [转]scp用法
    进入docker登录psql数据库对特定表进行操作
    [整]swp文件的处理
    shift+zz保存并退出
    [转]python变量作用域的有趣差别
    git 删除分支操作
    混用参数命名方式,确保顺序在命名之前
    [译]Python面试中8个必考问题
    《浪潮之巅》与我的职业选择
    EBS 用户及其联系人的失效时间
  • 原文地址:https://www.cnblogs.com/IT123/p/10899612.html
Copyright © 2020-2023  润新知