• 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。

  • 相关阅读:
    要回家了,想到以后..
    面试应注意的问题by JohnPhilips(转自matrix论坛)
    在痛苦中坚持,翻译啊
    数据抓取和分析~~
    不考研,就很闲吗?
    在Swing中使用高级的MVC和POJOs
    测试驱动
    开始找工作了,先记个流水帐
    又是开学的时候了
    开发者想要什么算是我的翻译作品的处女作吧,呵呵,致力于英语学习..
  • 原文地址:https://www.cnblogs.com/leyan/p/6100758.html
Copyright © 2020-2023  润新知