有关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 相关文章推荐
JS target与currentTarget区别说明
Aug 28 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
js解决movebox移动问题
Mar 29 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 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脚本的10个技巧(6)
2006/10/09 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
php中错误处理操作实例分析
2019/08/23 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
jquery.ui.draggable中文文档
2009/11/24 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
Python Queue模块详解
2014/11/30 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
环境科学专业个人求职的自我评价
2013/11/28 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
工程造价专业求职信
2014/07/17 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB