一、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的当前作用对象。

转载于:https://www.cnblogs.com/cshi/p/5449725.html

js中的call和apply方法的区别相关推荐

  1. JS中的call()和apply()方法(转)

    转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS 1.方法定义 call方法:  语法:call([thisObj ...

  2. js中call()方法和apply方法的使用

    1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  3. JS中的call()和apply()方法

    1.方法定义 call方法:  语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])  定义:调用一个对象的一个方法,以另一个对象替换当前对象.  说明:  ...

  4. js中修改this的指向方法整理

    JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...

  5. JavaScript -- 时光流逝(三):js中的 String 对象的方法

    JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...

  6. js中改变原数组的方法以及解决改变原数组的方法

    js中改变原数组的方法以及解决改变原数组的方法 参考文章: (1)js中改变原数组的方法以及解决改变原数组的方法 (2)https://www.cnblogs.com/Ingots/p/1151701 ...

  7. js中ES6新增的数组方法reduce(),和数组去重,降维。

    js中ES6新增的数组方法reduce() js数组reduce()详解 基本概念: reduce()方法接收一个函数作为累加器,数组中的每一值(从左到右)开始缩减,最后成为一个值 reduce()为 ...

  8. php js unescape,PHP实现JS中escape与unescape的方法

    本文实例讲述了PHP实现JS中escape与unescape的方法.分享给大家供大家参考,具体如下: JavaScript中的escape和unescape是吧字符串转换为unicode十六进制编码, ...

  9. js中给数组添加元素的方法有哪些

    js中给数组添加元素的方法有哪些 unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到 ...

最新文章

  1. Linux重定向和管道符使用避坑指南
  2. ASP.NET中分步骤向导组件Wizard组件的使用
  3. Mybatis Xml 传入动态字段 排序
  4. 法那科机器人初始化启动_发那科机器人的控制方式和控制柜的启动方式
  5. jQuery 倒计时
  6. HTML打开网页拒绝访问,WindowsApps无法访问怎么解决?
  7. 如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作
  8. 写单例模式以及防止反射破坏
  9. Flash 第八章 形状补间
  10. 《Head First 设计模式》(一):策略模式
  11. swagger的详细注解
  12. 华氏温度转换为摄氏温度(PTA厦大慕课)
  13. android 录制视频模糊,安卓手机录制视频不清晰是什么原因?_科技数码通
  14. 电脑出现All boot options are trled.黑屏不能开机解决方法
  15. 科学计算机怎么锁死,人类的技术科学被“锁死”,科学家已证实,仍有很多人不相信!...
  16. Twitter推特爬虫工具开发
  17. 使用Python脚本处理Excel文档
  18. 自媒体全是带节奏的标题党,不是创作者不行,而是用户们想看
  19. [POJ3107]Godfather
  20. 基于vue3的京东nutui组件库的表单校验规则:怎样进行表单验证?怎样只使用指定的某一个规则进行校验呢?

热门文章

  1. 男朋友让我纹他的名字,但我不想纹怎么办?
  2. 有没有适合做签名的简短句子?
  3. 现在为什么没有人再提“以厂为家”这样的词语啦?
  4. 关于职业规划,如何自我实现?
  5. 寻找一条适合自己的写作晋级之路
  6. 排名如何得到快速提升?
  7. 人到中年,别再挥霍你的“同情心”了
  8. 就说现在的钱有多难挣
  9. 大家的芝麻信用分都是多少?
  10. html java简单示例,HtmlUnit的简单例子