zoukankan      html  css  js  c++  java
  • javascript中this的理解使用

    this是javascript的关键字,也是对象,这个对象比较特殊,代表函数运行时自动生成的一个内部对象,只能在函数内部使用,随着函数使用场合的不同,this值会发生变化,但总的原则是不变的,就是this始终指向调用函数的那个对象

    this的使用有很多种情形:

    情形一:在全局环境下输出this值(这个this就代表当前的Window对象,值为Window)

    console.log(this); //Window

    情形二:构造函数中的this (所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。)

    function Test(){
    
        this.x = 1;
    
    }
    
    var obj = new Test();
    
    alert(obj.x); // 1

    情形三:函数还可以作为某个对象的方法调用,这时this就指这个上级对象

    function test(){
    
        alert(this.x);
    
    }
    
    var obj = {}; //定义一个新对象obj
    
    obj.x = 2; //给obj对象定义一个新的属性x,值设为2
    
    obj.m = test; //给obj对象定义一个新的属性m,值设为test,即把函数test赋给属性m,这时m就具备test一样的能力
    
    obj.m(); // 运行obj对象的m方法时,也就执行了 test函数,那么test函数中的this 指的就是调用test函数的对象 obj,所以 得到this.x的值为2

    情形四:this所在的函数被A对象调用执行的,那么这时的this 就是指A这个对象(this.x实际上访问的就是指A.x,也就是A对象下的x属性值)

    console.log(this); //window
    
    this.x = 3; //等同于 var x = 3
    
    function test(){
        console.log(this.x);
    }
    
    
    test(); //3 特别注意 这里的test是被window调用执行的,所以test函数里的this指向 window,那么this就会找window对象也就是全局对象下的x的值
    
    window.test(); //3 全局环境下直接执行函数就是在window下调用具体函数而已,所以test()与 window.test()执行结果一样,这里的this都是值调用test()函数的那个对象即window
    console.log(x); //3
    console.log(window.x); //3

    情形五:this在apply()调用时的指向

    ... ...

  • 相关阅读:
    网店系统H5版(一)
    php date()方法传入时间戳为空时返回1970-01-01
    MySQL实用语句
    HTTPS和SSL握手过程(转载)
    jinfo
    linux下以‘-’开头的文件名
    ssh连接服务器失败解决记录
    Linux时区详解
    fiddler抓包url有乱码
    mysql灾备演练问题
  • 原文地址:https://www.cnblogs.com/rapale/p/5075628.html
Copyright © 2011-2022 走看看