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 相关文章推荐
在线编辑器的实现原理(兼容IE和FireFox)
Mar 09 Javascript
jquery阻止后续事件只执行第一个事件
Jul 24 Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
Aug 10 Javascript
原生js二级联动效果
Jun 20 Javascript
浅谈vue中数据双向绑定的实现原理
Sep 14 Javascript
JS装饰器函数用法总结
Apr 21 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
vue配置多代理服务接口地址操作
Sep 08 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
phpmail类发送邮件函数代码
2012/02/20 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
Python操作csv文件实例详解
2017/07/31 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
python3.6编写的单元测试示例
2019/08/17 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
linux系统都有哪些运行级别
2012/04/15 面试题
辩论赛主持词
2014/03/18 职场文书
小学家长评语大全
2014/04/16 职场文书
工作年限证明范本
2015/06/15 职场文书