有关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 Prototype 对象扩展
May 15 Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 Javascript
理解javascript闭包
Dec 15 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
vue无限轮播插件代码实例
May 10 Javascript
js实现图片跟随鼠标移动效果
Oct 16 Javascript
微信小程序swiper使用网络图片不显示问题解决
Dec 13 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
Jul 26 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
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
python实现绘制树枝简单示例
2014/07/24 Python
python关闭windows进程的方法
2015/04/18 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Keras loss函数剖析
2020/07/06 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
Django缓存Cache使用详解
2020/11/30 Python
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
会计主管岗位职责范文
2013/11/08 职场文书
自我鉴定四大框架
2014/01/17 职场文书
《识字五》教学反思
2014/03/01 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
幼师求职自荐信
2014/05/31 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis