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中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
js获取指定的cookie的具体实现
Feb 20 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
angular实现商品筛选功能
Feb 01 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
vue+mock.js实现前后端分离
Jul 24 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 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配置文件php.ini的路径的方法
2014/08/20 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
Python if语句知识点用法总结
2018/06/10 Python
python实现事件驱动
2018/11/21 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
python excel转换csv代码实例
2019/08/26 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
个人考核材料
2014/05/15 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
Java8中Stream的一些神操作
2021/11/02 Java/Android
Golang 遍历二叉树
2022/04/19 Golang