JavaScript中call()和apply()的用法及区别
call(), apply()都属于Function.prototype的一个方法。它们有相同点也有不同点。
相同点:
1、产生的效果和作用是完全相同的;
2、至少有一个参数,第一个参数必须是一个对象Object。
不同点:
二者传递参数的方式不同。call方法参数将依次传递给借用的方法作参数, 而apply是直接将这些参数放到一个数组中再传递。
使用方法:
fun.call(this,arg1,arg2);
说明:fun是一个已定义的方法,this是方法执行时上下文相关的对象,arg1,arg2是传给fun方法的参数。
fun.apply(this,arguments); 或者
fun.apply(this,[arg1,arg2]);
说明:arguments是直接用JavaScript方法内本身有的arguments数组。
简单实例:
function add(num1,num2){alert(num1+num2);}//用call方法,参数按照add的参数传递function test1(num1,num2){add.call(this,num1,num2);}//用apply方法,参数作为一个数组传递function test2(){add.apply(this,arguments);}test1(2,7); //结果打印出9test2(2,7); //结果打印出9
使用场景:
当参数明确的时候可以用call(),参数不明确的时候可以用apply()。
JavaScript中call()和apply()的用法及区别相关推荐
- javascript中call和apply的区别和用法
javascript中call和apply的区别和用法 1.call和apply是什么 更改对象的内部指针指向,即改变对象的this指向的内容 function Fn(){this.name='小明' ...
- javascript中call和apply的区别
我理解javascript中call和apply的区别仅在于语法不同. 下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的: var myObj = { " ...
- JavaScript中的call,apply,bind学习总结
JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...
- JavaScript中call、apply个人理解
JavaScript中call.apply个人理解 一句话即通俗的说:call.apply 是为了改变this的状态而存在的 var lisi = {name:'李四',age:23};var zs ...
- html5有foreach吗,JavaScript中的map()和forEach()有什么区别?
来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...
- @ini_get php,php中get_cfg_var()和ini_get()的用法及区别_php技巧_脚本之家
本文实例讲述了php中get_cfg_var()和ini_get()的用法及区别.分享给大家供大家参考.具体分析如下: php里get_cfg_var()和ini_get()都是取得配置值的函数,当你 ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程
php中静态类与静态变量用法的区别分析 static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了. 1. 创建对象$object = ...
最新文章
- 网路游侠:某厂家新发布的数据销毁工具
- go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带...
- python判断哪个数最小_怎么用python比较三个数大小
- 【教育】斯坦福开学演讲:为什么很多人顶级学校毕业,却终身平庸?
- linux 文件 16进制显示,linux 16进制 产看文件
- setint 的用法
- JavaScript游戏之是男人就飞10000米
- uva 10330(最大流)
- 设计模式------简单工厂模式
- php钱汇算成美元,PHP to USD
- 端口已被占用1080(解决方案)
- 如何理解STM32单片机引脚的复用功能?
- 使用python+ffmpeg批量将视频水平翻转
- uniapp,小程序,实现签名功能
- 基于SSM(Spring+SpringMVC+MyBatis)的外卖点餐管理系统
- apicloud转uniapp_uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比
- 7-23 sdust-Java-学生成绩读取与排序 (10 分)
- 以YOLOv5为基准实现布匹缺陷检测(Fabric Defect Detection)
- 华为云申请SSL HTTPS
- 两分钟快速理解成本函数(cost function)