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

 

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值