汗-_-||,今天才懂了js中的apply()和call()方法

JavaScript中什么是call()?什么是apply()?

call:呼叫
apply:应用
call相当于是呼叫另一个方法来执行
apply是用另一个方法来执行,即把当前函数想要做的事让别的函数来做
举个例子:

function A (arg1, arg2) {
	doThings...
}

function B (arg1, arg2) {
	doThings...
}

var lcs = A.call(B, arg1, arg2);
var wy = A.apply(B, [arg1, arg2]);

相信大家已经看出一点点的差别了,对,就是call()传参时,参数是分别传的,就相当于是B方法呼叫A方法,一句一句给A说参数是什么,而apply()传参时,参数是作为一个数组来传的,固这种方式相当于是一个数组为一个参数一次性给A方法,就相当于是B有活了,但是B不想做,丢给A来做,这时B肯定不会一句一句手把手教,当然是一次性把参数丢给A,让A自己搞定。

当然在lcswy中,都是BA做事,但是lcs中是BA做,在wy中是B强制让A做。


call()apply()的一些特殊使用

求数组中的最小和最大元素

var nums = [2, 3, 6, 1, 5, 9, 0];	// 数组
var min = Math.min.apply(Math, nums);	// 求最小值 --> 0
var max = Math.max.apply(Math, nums); 	// 求最大值 --> 9

这里有趣的是,apply()的第二个参数本就是一个数组,这里巧妙的将数组直接当做apply()的第二个参数,让apply()将数组解析为一个个的参数;第一个参数可以传Math对象,也可以传null,都可以获取到最大值和最小值,这样就可以取得一个数组中的最小和最大元素了。

ps: 这里重点需要理解的是this执行上下文的概念,也就是上面apply()的第一个参数


暂时就这么多了,可能后续发现什么有趣的东西还会继续加的…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值