call和apply区别?
一、call和apply区别
apply:非常多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。
call:它可以接受多个参数,名列前茅个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。
延伸阅读:
二、apply的一些其他巧妙用法
(1)Math.max 可以实现得到数组中最大的一项:
因为Math.max不支持Math.max([param1,param2])也就是数组,但是它支持Math.max(param1,param2…),所以可以根据apply的特点来解决 var max=Math.max.apply(null,array),这样就轻易的可以得到一个数组中的最大项(apply会将一个数组转换为一个参数接一个参
数的方式传递给方法)
这块在调用的时候名列前茅个参数给了null,这是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,所以直接传递了一个null过去。
用这种方法也可以实现得到数组中的最小项:Math.min.apply(null,array)
(2)Array.prototype.push可以实现两个数组的合并
同样push方法没有提供push一个数组,但是它提供了push(param1,param2…paramN),同样也可以用apply来转换一下这个数组,即:
var arr1=new Array(1″,”2″,”3”);
var arr2=new Array(4″,”5″,”6”);
Array.prototype.push.apply(arr1,arr2); //得到合并后数组的长度,因为push就是返回一个数组的长度
也可以这样理解,arr1调用了push方法,参数是通过apply将数组转换为参数列表的集合
通常在什么情况下,可以使用apply类似Math.max等之类的特殊用法:
一般在目标函数只需要n个参数列表,而不接收一个数组的形式,可以通过apply的方式巧妙地解决这个问题。
以上就是关于call和apply区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
Hibernate 和 Spring Data JPA有哪些区别?
一、Hibernate 和 Spring Data JPA的区别1、功能不同Hibernate是一个ORM(对象关系映射)框架,用于在Java应用程序中管理数据库的访问和操作;...详情>>
2023-10-10 19:06:17
开通抖音小店的好处和坏处
抖音小店是目前最热门的电子商务平台之一,也是许多实体店铺的网上展示窗口。开通抖音小店除了可以提升销售额之外,还有哪些好处和坏处呢?本文...详情>>
2023-10-10 08:39:35
抖音团长选品小程序怎么弄
抖音作为当前最火爆的短视频平台,吸引了大量的用户,更加吸引了商家的眼球。抖音团长选品小程序的出现正是为了满足商家的需求,让商家更加方便...详情>>
2023-10-10 01:15:18
开通抖音小店第三方店铺链接
抖音小店是一个新兴的电商平台,它通过短视频分享的方式,让用户更轻松便捷地购买他们喜欢的产品。为了更好地推广自己的产品,你可以通过开通第...详情>>
2023-10-10 00:12:55热门推荐
cs与bs架构的区别与优缺点?
沸call和apply区别?
热btoc与b2b区别?
热数字逻辑、数值分析和数字电子技术有什么区别?
新C++中N2++和++N2有什么区别?
Ctrl+F5和Ctrl+Shift+Delete有哪些区别?
词向量和主题模型有哪些区别?
j2ee和java的区别?
chatgpt国内能用吗?
chatgpt将带来哪些影响?
手机RAM和电脑运行内存有哪些区别?
Hibernate 和 Spring Data JPA有哪些区别?
Tomcat、Nginx 和 Apache有什么区别?
Java和Javase的语法有区别吗?
技术干货






