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 QueryString解析类代码
Jan 17 Javascript
jQuery表单验证插件formValidator(改进版)
Feb 03 Javascript
js简单实现用户注册信息的校验代码
Nov 15 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
一看就懂:jsonp详解
Jun 01 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
JS中call()和apply()的功能及用法实例分析
Jun 28 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内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
php排序算法实例分析
2016/10/17 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
JQuery小知识
2010/10/15 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
修改npm全局安装模式的路径方法
2018/05/15 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
学习python可以干什么
2019/02/26 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python绘制雪景图
2019/12/16 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python实现发送邮件
2021/03/02 Python
护士自我鉴定
2013/10/23 职场文书
学校欢迎标语
2014/06/18 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
介绍信的格式
2015/01/30 职场文书
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python