有关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代码
Aug 27 Javascript
js修改原型的属性使用介绍
Jan 26 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
JQuery+CSS实现图片上放置按钮的方法
May 29 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
纯jQuery实现前端分页功能
Mar 23 jQuery
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
Oct 20 Javascript
前端监听websocket消息并实时弹出(实例代码)
Nov 27 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
PHP生成sitemap.xml地图函数
2013/11/13 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
python实现顺序表的简单代码
2018/09/28 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
python包的导入方式总结
2021/03/02 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
卫校中专生个人自我评价
2013/09/19 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
学生自我鉴定
2013/12/18 职场文书
高中校园广播稿
2014/01/11 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
节水倡议书范文
2014/04/15 职场文书
社会调查研究计划书
2014/05/01 职场文书
新学期开学标语
2014/06/30 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
个人自查自纠材料
2014/10/14 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
2015年组织部工作总结
2015/04/03 职场文书