js 当中的apply与call

apply 与 call  在js 当中主要是改变this指向

例如当我们执行  一个方法  

知乎上面链接地址

var numbers = [5, 6, 2, 3, 7];

求最大可以写成这样
var max = Math.max.apply(this, numbers);

比如大家都知道字符串会有split方法  而数组没有对不对  我们用apply就可以把split方法运用到数组上面请看

var s="wujianglong";

var s1=["wu","jiang","long"];
s.split("")    // ["w", "u", "j", "i", "a", "n", "g", "l", "o", "n", "g"]

s1.split("")  //VM418:1 Uncaught TypeError: s1.split is not a function

可见数组是没有这个方法的  这时候如果想要有  当然一般都不这么做  我只是做个比喻  任何方法都是可以这样去做

s.split.apply(s1,["wu","jiang","long"])

这样就有结果了


var func1 = function(arg1, arg2) {};

就可以通过 func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用

比较简单的理解方式:

猫吃鱼,狗吃肉,奥特曼打小怪兽。

有天狗想吃鱼了

猫.吃鱼.call(狗,鱼)

狗就吃到鱼了

猫成精了,想打怪兽

奥特曼.打小怪兽.call(猫,小怪兽)

就这样记住了。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值