js中this的四种调用模式

Posted 雪昀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中this的四种调用模式相关的知识,希望对你有一定的参考价值。

    在js中,this的含义比较多,在不同的情况下,代表的意义也不一样。总的来说有以下四种含义:

一、纯粹的函数调用

    在这种模式下,this代表全局对象Global。

   

   function test(){

        this.x=1;

        alert(this.x);


    }

    test();

   输出结果是1.

 

二、作为对象方法的调用

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

   

    function test(){

       alert(this.x);

    }

   var o={};

    o.x=1;

    o.m=test;

    o.m();//1

    

三、作为构造函数调用

  所谓构造函数,就是通过这个函数生成一个新对象。这时,this就是指这个新对象。

    

   function test(){

         this.x=1;


      }

  var 0=new test();

     alert(o.x);//1

  运行结果为1,这里的this已经不是全局对象了。

    为了区分上面的例子:

  

   var x=2;
   
   function test(){

         this.x=1;
 
   }


   var o=new test();

      alert(x);//2

 

四、apply 调用

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

    

  var x=0;
   function test(){

     alert(this.x);
 
  }

   var o={};

     o.x=1;

     o.m=test;

    o.m.apply();//0

   apply()的参数为空时,默认调用全局对象。因此运行结果是0,证明this指的是全局对象。

    如果写成这样:

    

  o.m.apply(o);//1

   证明这时this代表的是对象o。

以上是关于js中this的四种调用模式的主要内容,如果未能解决你的问题,请参考以下文章

JS函数调用的四种方法

函数的四种调用模式

第164天:js方法调用的四种模式

函数的四种调用模式

函数的四种调用模式

JS中this的四种用法