call和apply

这这两个平时工作中用的很少 之前学习过好几次 每次学完了 因为用的少 所以过段时间又忘了 但是又的确用的到,今天看你不知道的js 又看到了 还是写下来个人的理解吧

区别:call的第二个参数是一个一个的 call({},参数1,参数2,参数3)

         apply的第二个参数是数组apply({},[参数1,参数2,参数3])

 

用法:理解这两个的关键点在于call和apply的第二个参数 到底干啥用的?

其实很简单,第二个参数是给第一个参数用的,第一个参数一般来说是一个对象

举例: 

function x(a,b) {
return a+b;
}
function y(a,b) {
return a-b;
}

x和y两个方法 ,x是返回两个值相加,y是返回两个值相减
要是我想让x也可以相减,y也可以相加的时候 这两个就派上用场了

x.apply(y,[10,5]) //返回15
y.apply(x,[10,5]) //返回5


再来个高级一点的例子
var a = '1234';
我想在字符串a中每个数字之间加入一个‘-’,要是a是数组[1,2,3,4],那么我们利用数组的join方法可以很轻松解决,但是a是字符串啊啊啊啊啊啊
那么怎么办呢,很简单,一行代码解决:
Array.join.call(a,'-')
解读:a方法拥有了数组的join方法,传入实参‘-’,嗯嗯就是这样。


posted @ 2017-08-23 09:38  redeemer  阅读(103)  评论(0编辑  收藏  举报