zoukankan      html  css  js  c++  java
  • javascript this指向

    this对象是什么:

      this对象是与运行时函数执行的上下文绑定的。这句话其实已经很好的解释了this对象,为我们确定this指明了方向!但是需要注意的是:由于javascript具有动态性(解释执行,当然也有简单的预编译过程),this对象只有运行时才能够确定!

    确定this对象的方法:

    当函数为全局函数时,this指向window;当函数作为某个对象的方法被调用时,this指向那个对象。特别需要注意的是,在非严格模式下匿名函数的执行上下文具有全局性,其中的this指向window,而严格模式this为空。

    案例:

    看不懂没有关系,下面讲解一下实例:

    1.先来点简单的

    /*全局当中的this*/
    console.log(this); //window
    /*全局函数中的this*/
    function fn(){  
        console.log(this); //window
    }
    fn();
    /*对象当中方法的this*/
    var obj = {
        name : '复读机',
        getThis : function(){
            console.log(this); 
        }
    }
    obj.getThis()//obj 此函数作为obj的方法被调用
    var getThis1 = obj.getThis;
    getThis1();//window 此函数不是作为obj方法被调用,可以看做是全局函数

    2.闭包与this

    /*闭包与this*/
    var obj = {
        name : '复读机',
        getThis : function(){
            return function(){
                console.log(this); //window
            }
        }
    }
    obj.getThis()();

    还是简单解释一下:在这个例子中this的指向为运行时this所在的执行上下文,很明显this的上下文为一个匿名函数,这个匿名函数不是属于obj的方法,它具有全局性,所以this指向window

    3.类与this

    /*类与this*/
    function CreateDog(name,age){
        this.name = name;
        this.age = age;
        console.log(this); //指向实例
    }
    CreateDog.prototype.sayThis = function(){
        console.log(this); //指向实例
    }
    var dog = new CreateDog("xiaohei",1);
    dog.sayThis();

    很多人误认为this指向类,然而this指向实例,这一点是毋庸置疑滴!

    最后,关于this的有很多,需要在实践中慢慢体会!

  • 相关阅读:
    VUE单页模板
    Nacos(作为配置中心)
    OpenFeign与Nacos(作为注册中心) 远程调用
    Nacos 服务注册
    Docker 安装Redis
    Docker安装Mysql
    多线程之CAS和ABA
    Volatile
    JAVA语言的特点
    判断多选按钮被选中两种方法
  • 原文地址:https://www.cnblogs.com/wang-jiang/p/4450626.html
Copyright © 2011-2022 走看看