JS中apply和call的应用和区别
程序员文章站
2022-08-09 23:15:24
因为object没有某个方法,但是别的对象有,可以借助apply或call像别的对象借方法来操作。 猫吃鱼,狗吃肉,奥特曼打小怪兽。 有天狗想吃鱼了 猫.吃鱼.call(狗,鱼) 狗就吃到鱼了 猫成精了,想打怪兽 奥特曼.打小怪兽.call(猫,小怪兽) call需要把参数按顺序传递进去,而appl ......
因为object没有某个方法,但是别的对象有,可以借助apply或call像别的对象借方法来操作。
猫吃鱼,狗吃肉,奥特曼打小怪兽。
有天狗想吃鱼了
猫.吃鱼.call(狗,鱼)
狗就吃到鱼了
猫成精了,想打怪兽
奥特曼.打小怪兽.call(猫,小怪兽)
call需要把参数按顺序传递进去,而apply则是把参数放在数组里。
- 明确知道参数数量时,用call;
- 而不确定的时候,用apply把参数放在数组里传递进去。
call和apply其实是同一种东西,区别只是参数不同。call其实是apply的语法糖。
方法一: function concat(arr1, arr2) { return arr1.concat(arr2); } 方法二:用apply function concat(arr1,arr2){ var newArr = arr1.slice(0); [].push.apply(newArr,arr2); return newArr; }