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 相关文章推荐
JS 创建对象(常见的几种方法)
Nov 03 Javascript
常见JS效果之图片减速度滚动实现代码
Dec 08 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
jquery 按钮状态效果 正常、移上、按下
Aug 12 Javascript
JS实现日期加减的方法
Nov 29 Javascript
Angular 路由route实例代码
Jul 12 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
JavaScript实现表单验证功能
Dec 09 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
简单的页面缓冲技术
2006/10/09 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
vue实现文字加密功能
2019/09/27 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Python正则表达式匹配HTML页面编码
2015/04/08 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
高二生物教学反思
2014/01/27 职场文书
放弃继承权公证书
2015/01/23 职场文书
商务英语求职信范文
2015/03/19 职场文书
新学期家长寄语2016
2015/12/03 职场文书