码迷,mamicode.com
首页 > Web开发 > 详细

js中this的四种调用模式

时间:2016-11-25 11:33:18      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:方法   输出   构造   cti   apply   区分   通过   改变   div   

    在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的四种调用模式

标签:方法   输出   构造   cti   apply   区分   通过   改变   div   

原文地址:http://www.cnblogs.com/leyan/p/6100758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!