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

  • 相关阅读:
    二分搜索树的深度优先遍历和广度优先遍历
    数据结构与算法之非比较排序【Java】
    数据结构与算法之比较排序【Java】
    像素 转换 px dp
    Toast
    MySQL丶auto_increment
    MariaDB · 性能优化 · Extended Keys
    加唯一索引怎么会导致丢数据
    语句执行错误一· Count(Distinct) ERROR
    innodb参数 · innodb_flush_log_at_trx_commit
  • 原文地址:https://www.cnblogs.com/leyan/p/6100758.html
Copyright © 2020-2023  润新知