js中apply()和call()方法有用吗用处不大我就不深究了。
发布时间:2025-05-20 14:35:19 发布人:远客网络
一、js中apply()和call()方法有用吗用处不大我就不深究了。
1、定义数组a里有3个元素1,2,3,函数add()能向调用它的数组压入一个数,这个数是3个参数之和
2、add.call(a,1,2,3);和add.apply(a,b);的效果都是一样的,都是向数组a压入(1+2+3)
3、由此看出call和apply的区别是传入参数方式的区别,
4、call的话是Function.call(obj,arg[0],arg[1]……arg[n]);
5、而apply是array=[arg[0],arg[1]……arg[n]];
6、参数是一个对象和一个数组类型的对象
7、个人建议普通情况使用call,参数个数很多的时候才使用apply,不过主要还是看个人的编码习惯啦~
二、JS中 call和apply的区别和作用
1、先说区别call和apply的参数不同,前者是call(a,b,c,...)吧所有的参数都传递。后者apply只传递两个参数apply(a,b),其中b是一个数组。这是两者最大的不同,在于后者传递的是一个数组。在大多数情况下,两个函数可以相互替换的。你可以把apply当作call的糖衣写法。就好像js里面循环函数你可以用for也可以用while一样。call和apply不是一定要怎么用的。
2、但是有时候apply更有用一些,比如我们需要传递一些不知道多少个数量的参数,就没法用call,而因为apply传递的是个数组,数组就比较容易适配各种参数的数量。
3、然后,说一说这两个函数的作用,调用一个对象的一个方法,以另一个对象替换当前对象。这是比较书面的说法,比如:a.call(b),实际上执行的是在a的领域里执行b。有点绕是不是,这里就涉及到一个作用范围的问题,在全局范围下的确可以这样用,但是在面向对象的概念中。如果a是一个对象,而b是另一个对象,那么b中没有a的方法,如何能执行b的方法呢?通过a.call(b),就让b去执行了a的方法。很神奇吧,但是,一般用不上啦,不懂就不懂吧,当你写复杂一些的js插件和比较复杂的类的的时候,就很有用啦。
三、Javascript 中 Math.max.apply() 的用法问题
1、此处的var max为申明变量max,无特殊意义。
2、var max= Math.max.apply(Math,values);
3、这句代码的意思执行Math对象中的max函数,参数为values,并将返回结果赋值于max
4、其中apply函数为JS的内置函数,作用为执行该函数。
5、apply函数中的第一个参数为函数所属对象,通常为当前页面(this)。第二个参数为传入到函数中的参数数组(必须为数组)。
6、<script type="text/javascript">