有关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 相关文章推荐
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
jquery-mobile基础属性与用法详解
Nov 23 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
Vue添加请求拦截器及vue-resource 拦截器使用
Nov 23 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
微信小程序图片左右摆动效果详解
Jul 13 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 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图片添加水印功能示例小结
2016/10/03 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
详解Python装饰器由浅入深
2016/12/09 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
师范毕业生求职自荐信
2013/09/25 职场文书
护理学专业推荐信
2013/12/03 职场文书
委托公证书
2014/04/08 职场文书
经营理念口号
2014/06/21 职场文书
装配出错检讨书
2014/09/23 职场文书
个人汇报材料范文
2014/12/30 职场文书
电影建党伟业观后感
2015/06/01 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python