有关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自动打开页面上链接的实现代码
Sep 25 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JS自定义混合Mixin函数示例
Nov 26 Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
vue实现五子棋游戏
May 28 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扩展编写点滴 技巧收集
2010/03/09 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python实现学生成绩管理系统
2020/04/05 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
this关键字的作用
2016/01/30 面试题
博士研究生自我鉴定范文
2013/12/04 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
2014年标准化工作总结
2014/12/17 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
php修改word的实例方法
2021/11/17 PHP