有关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 相关文章推荐
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
vue中的数据绑定原理的实现
Jul 02 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 Javascript
vue指令做滚动加载和监听等
May 26 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
JS快速实现简单计算器
Apr 08 Javascript
js实现星星海特效的示例
Sep 28 Javascript
vue/cli 配置动态代理无需重启服务的方法
May 20 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中for循环语句的几种变型
2007/03/16 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JS常用知识点整理
2017/01/21 Javascript
EsLint入门学习教程
2017/02/17 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
vue实现循环切换动画
2018/10/17 Javascript
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
flask开启多线程的具体方法
2020/08/02 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
班风学风建设方案
2014/05/06 职场文书
学校安全生产承诺书
2014/05/23 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
英文升职感谢信
2015/01/23 职场文书
全新239军机修复记
2022/04/05 无线电