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 相关文章推荐
鼠标移到导航当前位置的LI变色处于选中状态
Aug 23 Javascript
jQuery通用的全局遍历方法$.each()用法实例
Jul 04 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
微信小程序 教程之模板
Oct 18 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
微信小程序文章详情页面实现代码
Sep 10 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
JavaScript事件对象深入详解
Dec 30 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
JS实现继承的几种常用方式示例
Jun 22 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
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python生成器用法实例详解
2019/11/22 Python
详解Python实现进度条的4种方式
2020/01/15 Python
python中图像通道分离与合并实例
2020/01/17 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
大学生入党思想汇报
2014/01/01 职场文书
问卷调查计划书
2014/01/10 职场文书
九年级科学教学反思
2014/01/29 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
python通过新建环境安装tfx的问题
2022/05/20 Python
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript