有关JavaScript中call()和apply() 的一些理解


Posted in Javascript onMay 20, 2016

call()方法和apply()方法,在上层应用中用的不是很多,但在底层写JS框架的时候却常常看到。然后度娘谷哥一番,也发现好多达人写出了自己的理解和笔记,但始终还是云里雾里,于是去W3C学习了下

在W3C网上研究这两个方法的时候,看到一个词语,叫“对象冒充”,这个概念本人觉得还是挺重要的,让我对这两个方法理解起来更加直观。

call()方法,看下官方给出的例子

function sayColor(sPrefix,sSuffix) {
  alert(sPrefix + this.color + sSuffix);
};

var obj = new Object();
obj.color = "blue";

sayColor.call(obj, "The color is ", "a very nice color indeed.");

最后输出的结果是“The color is blue, a very nice color indeed.”

call()方法就是将第一个参数替换方法中的this,然后后面的参数传入该方法使用

apply()方法,同样先看个官方给出的例子

function sayColor(sPrefix,sSuffix) {
  alert(sPrefix + this.color + sSuffix);
};

var obj = new Object();
obj.color = "blue";

sayColor.apply(obj, new Array("The color is ", "a very nice color indeed."));

最后输出的结果仍然是“The color is blue, a very nice color indeed.”

其实call()方法和apply()方法可以粗略的认为是差不多的,第一个参数都是替换方法中this关键字,只是后面传给方法的传参方式不同,call是直接对应,apply是利用数组,在数组中一一对应

以上这篇有关JavaScript中call()和apply() 的一些理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
IFrame跨域高度自适应实现代码
Aug 16 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
jQuery获取上传文件的名称的正则表达式
May 21 Javascript
javascript HTML+CSS实现经典橙色导航菜单
Feb 16 Javascript
javacript获取当前屏幕大小
Jun 04 Javascript
javascript之Array 数组对象详解
Jun 07 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
Bootstrap表格和栅格分页实例详解
May 20 #Javascript
JavaScript 数组some()和filter()的用法及区别
May 20 #Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
May 20 #Javascript
AngularJS中的指令全面解析(必看)
May 20 #Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 #Javascript
javascript的理解及经典案例分析
May 20 #Javascript
JS中对象与字符串的互相转换详解
May 20 #Javascript
You might like
德劲1102收音机的打理维修案例
2021/03/02 无线电
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP7.0版本备注
2015/07/23 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
python基于phantomjs实现导入图片
2016/05/13 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
python实现简单登陆流程的方法
2018/04/22 Python
多个应用共存的Django配置方法
2018/05/30 Python
python解释器spython使用及原理解析
2019/08/24 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
回门宴父母答谢词
2014/01/26 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
党课心得体会范文
2014/09/09 职场文书
大学生创业事迹材料
2014/12/30 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server