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 相关文章推荐
JavaScript使用cookie
Feb 02 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
JavaScript 数组详解
Oct 10 Javascript
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
JavaScript基础教程之alert弹出提示框实例
Oct 16 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
深入理解JavaScript编程中的原型概念
Jun 25 Javascript
jQuery+ajax实现文章点赞功能的方法
Dec 31 Javascript
Vue实现web分页组件详解
Nov 28 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
详解vue移动端项目代码拆分记录
Mar 15 Javascript
react高阶组件添加和删除props
Apr 26 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日期操作技巧小结
2016/06/25 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
vue axios用法教程详解
2017/07/23 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
公司委托书范本5篇
2014/09/20 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
奖学金个人总结
2015/03/04 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
新教师教学工作总结
2015/08/14 职场文书
卖车协议书范文
2016/03/23 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
MySQL中varchar和char类型的区别
2021/11/17 MySQL
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js