• Call and Apply in JavaScript


    Call 和 Apply 方法可以用来代替另一个对象调用一个方法,改变this指向。

    1.call
    -call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
    -调用一个对象的一个方法,以另一个对象替换当前对象。
    -call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

    具体方法实现见如下示例:

     1 <script type="text/javascript">
     2     function PersonA(){
     3         this.name = 'a' ;
     4         this.say = function(){
     5             console.log('A:' + this.name) 
     6         }
     7     } 
     8 
     9     function PersonB(){
    10         this.name = 'b';
    11 //      console.log('B:' + this.name);
    12     }
    13 
    14     var a = new PersonA();
    15     var b = new PersonB();
    16 
    17     a.say.call(b);
    18 </script>

    其中b对象想要调用a中的say方法,则可通过call来实现。其中call的第一个参数为传入给当前对象的对象b。[后面的参数都是传递给当前对象的参数。]

    运行结果:

    浏览器输出: A:b

    结果表明 call 方法将 this的指向改为了b对象。


    2.apply
    -apply([thisObj[,argArray]])
    -应用某一对象的一个方法,用另一个对象替换当前对象。

    -如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    apply方法的功能与call一致,不同的地方在于之后的参数,call方法是将参数一个个带进去,而apply是用数组等方式。

    如: a.say.call(b,arg1,arg2,...)

      a.say.apply(b,[arg1,arg2,...])

  • 相关阅读:
    配置Harbor支持https功能实战篇
    Docker自建仓库之Harbor部署实战
    Docker自建仓库之Harbor高可用部署实战篇
    Docker自建仓库之Docker Registry部署实战
    Docker Hub镜像公共仓库使用
    阿里云镜像公共仓库使用
    自定义haproxy镜像
    HAProxy常见的安装方式
    自定义tomcat业务镜像
    自定义Tomcat的基础镜像
  • 原文地址:https://www.cnblogs.com/zhaoww/p/5247827.html
Copyright © 2020-2023  润新知