有关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 位置插件
Dec 25 Javascript
小议javascript 设计模式 推荐
Oct 28 Javascript
jQuery EasyUI 中文API Layout(Tabs)
Apr 27 Javascript
JavaScript经典效果集锦
Jul 06 Javascript
javascript中创建对象的几种方法总结
Nov 01 Javascript
js截取小数点后几位的写法
Nov 14 Javascript
Jquery插件easyUi表单验证提交(示例代码)
Dec 30 Javascript
利用JavaScript判断浏览器类型及版本
Aug 23 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
详解Puppeteer 入门教程
May 09 Javascript
原生JS实现的简单轮播图功能【适合新手】
Aug 17 Javascript
实例讲解JavaScript截取字符串
Nov 30 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下使用SMTP发邮件的代码
2008/01/10 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
利用javascript查看html源文件
2006/11/08 Javascript
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
js自定义回调函数
2015/12/13 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
Python socket实现的简单通信功能示例
2018/08/21 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python 制作磁力搜索工具
2021/03/04 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
通用C#笔试题附答案
2016/11/26 面试题
《世界多美呀》教学反思
2014/03/02 职场文书
家长通知书家长评语
2014/04/17 职场文书
求职信怎么写范文
2014/05/26 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
2015年党员承诺书
2015/01/21 职场文书
转正申请报告格式
2015/05/15 职场文书
归途列车观后感
2015/06/17 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python