• this


    this是一个引用类型,指向调用者

    function testCallback(){
        if(this === window){
            console.log("this === window");
        }else if(this === document){
            console.log("this === document");
        }else if(this === a){
            console.log("this === a");
        }
    }
    testCallback(); //this===window
    document.onclick = testCallback; //this === document
    var a = {};
    a.callback = testCallback;
    a.callback(); //this === a
    

    上述三种最简单的情况,应该也算是我们最常见的了吧。说是三种,其实也只能算是两种吧,因为document.onclicka.callback的两种,其实质是相同的,只是对象名和属性名是不同的。

    所以,我们可以先根据上面的情况,把this的指向,定义为两种:

    1:一种是如果显示的在一个对象上直接调用了一个方法,那么其中的this就是指向这个显示的对象。

    2:第二种是,如果没有显示的调用的话,比如之前代码中,直接使用testCallback()执行函数,那么其中的this,就是指向window对象。

    3:在函数内部使用,用来引用包含函数的对象,而不是函数本身。

    为什么没有显示的对象调用时,this是指向window对象呢?记得我们在最初学习JS时有过这样的描述吧,如果没有使用var定义一个变量,即便是在局部作用域定义,这也是一个全局变量,而全局变量是会被添加到window对象中,作为其中的一个属性的,所以,之前的testCallback方法,其实是存在于window对象中的一个方法。所以,这里不算是显示调用,但是如果把这种调用方法写的完全的话,应该是window.testCallback()写法,所以,按照显示调用的说法,也是正确。

  • 相关阅读:
    Webpack
    django 基础入门(二)
    django 基础入门(一)
    jQuery(二)
    JavaScripts+jquery
    html(第一天,div+css)
    SqlAlchemy ORM
    redis总结
    memcached总结
    Python (九) 协程以及数据库操作
  • 原文地址:https://www.cnblogs.com/caroline4lc/p/4821603.html
Copyright © 2020-2023  润新知