保持谦虚,积极进取

博客园 首页 新随笔 联系 订阅 管理

转载:https://blog.csdn.net/piaoyinluo2316/article/details/84065234

首先我们要知道,JS中函数调用共有四种方法。call()就是其中一种。我先简单的的说明以下四种方法:

我们先定义一个函数:

  1.  
    function test(){
  2.  
    /**do something**/
  3.  
    }

1)第一种,也就是最常见的调用方法:

test();

2)第二种:对象调用

我们需要把定义的函数放到一个对象里面(obj)

  1.  
    var obj={
  2.  
    test:function (){
  3.  
    /**do something**/
  4.  
    }
  5.  
    }

调用: 

obj.test();

3)第三种:构造函数调用

  1.  var tmp = new test();

4)第四种:使用call()或者applay()

这种方法调用的时候必须传递一个参数,只要不空着即可。

test.call(null)

其实,以上调用方式,隐含的传递了一个变量:this。

有点面向对象基础的人都知道,this是一个“指针”,对于js来说,this指向了方法的作用域。而call()的作用,恰恰就是改变这个作用域(this)。也就是call(null)中必须的那个参数成为了新的this。

再打个比方,call()就像现实生活中的打电话,首先打电话前要拨号,这个号码就相当于this,必须有号码才有可能拨通电话。而拨打不同的号码,即call(null)的参数值不同,接电话的人(作用域)也不同。而给接电话方传递的信息可以通过call(null,param,param,param....)的其他不必须参数传递,接电话的人也可以通过函数的return回复消息!

 

posted on 2020-09-01 19:21  保持谦虚,积极进取  阅读(606)  评论(0)    收藏  举报