有关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 相关文章推荐
Mozilla中显示textarea中选择的文字
Sep 07 Javascript
javascript 函数速查表
Feb 07 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
Webpack优化配置缩小文件搜索范围
Dec 25 Javascript
jQuery事件多次绑定与解绑问题实例分析
Feb 19 jQuery
webpack.DefinePlugin与cross-env区别详解
Feb 23 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
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
用PHP来写记数器(详细介绍)
2006/10/09 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Linux下python3.7.0安装教程
2018/07/30 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
生物技术专业毕业生求职信范文
2013/12/14 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
导师推荐信范文
2014/05/09 职场文书
幽默导游词开场白
2015/05/29 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android