javascript中apply和call方法的作用及区别说明


Posted in Javascript onFebruary 14, 2014

一、call和apply的说明

1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同。

2、语法:foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments) == this.foo(arg1, arg2, arg3);

3、相同点:两个方法产生的作用是完全一样的。

4、不同点:方法传递的参数不同。

二、实例代码

<script type="text/javascript">
    function A(){
        this.flag = 'A';
        this.tip = function(){
            alert(this.flag);
        };
    }
    function B(){
        this.flag = 'B';
    }
    var a = new A();
    var b = new B();
    //a.tip.call(b);
    a.tip.apply(b);
</script>

三、代码解释(即说明apply和call作用)

1、实例代码定义了两个函数A和B,A中包含flag属性和tip属性(这个属性赋值一个函数),B中有一个flag属性。

2、分别创建A和B的对象a和b。

3、无论是a.tip.call(b);和a.tip.apply(b);运行的结果都是弹出B。

4、从结果中可以看出call和apply都可以让B对象调用A对象的tip方法,并且修改了this的当前作用对象。

Javascript 相关文章推荐
基于jquery的给文章加入关键字链接
Oct 26 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
javascript 手动给表增加数据的小例子
Jul 10 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
javascript过滤数组重复元素的实现方法
May 03 Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 Javascript
关于前后端json数据的发送与接收详解
Jul 30 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
Dec 27 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
【js设计模式】SOLID五大设计原则
Mar 24 Javascript
jQuery获取和设置表单元素的方法
Feb 14 #Javascript
javascript生成json数据简单示例分享
Feb 14 #Javascript
jquery中的$(document).ready()使用小结
Feb 14 #Javascript
javascript 终止函数执行操作
Feb 14 #Javascript
中止javascript执行的方法
Feb 14 #Javascript
js replace替换所有匹配的字符串
Feb 13 #Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 #Javascript
You might like
中国第一家无线电行
2021/03/01 无线电
php xml文件操作代码(一)
2009/03/20 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
解放web程序员的输入验证
2006/10/06 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
webpack入门必知必会
2017/01/16 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
python保存网页图片到本地的方法
2018/07/24 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python 画函数曲线示例
2019/12/04 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
学校运动会霸气口号
2014/06/07 职场文书
驾驶员安全责任书
2014/07/22 职场文书
求职自我评价范文100字
2014/09/23 职场文书
追悼会答谢词
2015/01/05 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
教师节班会开场白
2015/06/01 职场文书
2015年重阳节主持词
2015/07/04 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL