zoukankan      html  css  js  c++  java
  • javascript中this的用法

    this的用法【this,正在使用的对象。】
    (1)【纯粹的函数调用】它代表函数运行时,自动生成的一个内部对象(这种情况只能在函数内部使用)

    function test1(){
        this.x=1;
        alert(this.x);//alert(this.x);
    }
    test1();//1

    (2)【纯粹的函数调用】全局对象,this代表全局对象Global【window】

    var x=2;
    function test2(){
        alert(this.x);
    }
    test2(this.x);//2
    var x=1;
    function test3(){
        this.x=0;
    }
    test3();
    alert(this.x);//0,当执行test3();的时候,this就代表了window对象,这个时候与window.test()是等价的!

    (3)【作为对象方法调用】函数可以作为某个对象的方法调用,这时这个this就指这个上级对象

    function test3(){
        alert(this.x);
    }
    var obj={};
    obj.x=4;
    obj.y=test3;
    obj.y();
    //===
    var obj={x:4,y:test3};
    obj.y();

    (4)【作为构造函数调用】所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

    function test4(){
        this.x=3;
    }
    var t=new test4();
    alert(t.x);//3
    
    //为了证明此时this不是全局变量
    var x=9;
    function test5(){
        this.x=7;
    }
    var ts=new test5();
    alert(x);//9

    (5)【apply()调用】apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

    var x=11;
    function test6(){
    alert(this.x);
    }
    var obj={};
    obj.x=1;
    obj.y=test6;
    // obj.y.apply();//11;apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。
    obj.y.apply(obj);//1;运行结果就变成了1,证明了这时this代表的是对象obj。
  • 相关阅读:
    石子游戏2
    礼物的最大价值
    CF512D. Fox And Travelling
    arc099F
    CF504E. Misha and LCP on Tree(长链剖分求k级祖先)
    agc031D
    CF555E. Case of Computer Network
    agc023D
    CF1406E. Deleting Numbers
    CF585F. Digits of Number Pi
  • 原文地址:https://www.cnblogs.com/boyzi/p/4387236.html
Copyright © 2011-2022 走看看