JS 方法名.call()方法

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

我们先定义一个函数:

function test(){
    /**do something**/
}

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

test();

2)第二种:对象调用

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

var obj={
    test:function (){
        /**do something**/
    }
}

调用: 

obj.test();

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


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回复消息!

 


版权声明:本文为piaoyinluo2316原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。