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 easyui的tabs使用时的问题
Mar 23 Javascript
JS的反射问题
Apr 07 Javascript
菜鸟javascript基础整理1
Dec 06 Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
基于javascript制作微信聊天面板
Aug 09 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
JS实现放烟花效果
Mar 10 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
vant 解决tab切换插件标题样式自定义的问题
Nov 13 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
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python入门篇之字符串
2014/10/17 Python
Python 加密的实例详解
2017/10/09 Python
浅谈Python处理PDF的方法
2017/11/10 Python
使用Python来开发微信功能
2018/06/13 Python
python文字转语音的实例代码分析
2019/11/12 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
更夫岗位责任制
2014/02/11 职场文书
自荐书范文范例
2014/02/13 职场文书
汇源肾宝广告词
2014/03/20 职场文书
初中学校军训方案
2014/05/09 职场文书
红头文件任命书范本
2014/06/05 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
我收到了德劲DE1107
2022/04/05 无线电