`
mdf1987
  • 浏览: 7043 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript难点之三:没有见过的怪物call

阅读更多
Call这个东西也不是很好理解的=。=+,如果你之前一直在学JAVA或者C++,而后才接触JS的话,call可能就是你的一个噩梦。噩梦归噩梦,只要醒了也就没事了,下面就是把你打醒的过程,而且此过程无任何疼痛感,就是给你泼一个冷水,一下子就清醒了。
依然是先看定义:call:执行与此对象相关联的代码。通过函数调用表达式启用它。实现这个内部方法的对象被称为 函数。
手册上的解释为:调用对象的一个方法,以另一个对象替换当前对象。call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
还是手册上解释的浅显易懂,其实call的用法就是如下了。
C对象.A方法.call(B对象)
很简单,call这个方法就相当于把C对象的方法A抢过来,塞到对象B的肚子里,然后根据对象B的情况来调用A方法。看下面例子
   function who(){
alert(this.name);
};
window.who();
var me = {name:"aaa"};
    me.who = who;
me.who();

var c = {};
who.call(c);//c里没有name属性,显示未定义
me.who.call(c);//c里没有name属性,显示未定义
c.name="MMM";
me.who.call(c);//c里有了name属性,显示MMM
如果方法要传入参数的话,就这么写,me.who.call(c,参数1, 参数2....)当然,这个例子里不需要参数。
顺便说一下,这个CALL还可以用来模拟C++中的多继承,具体怎么用,随便一搜就懂了,反正也只是利用CALL方法本来的特性而已。还有一个apply方法和call用法基本相同,只不过apply后面要这样写apply(对象,数组),第二个参数只能是数组。
这下应该清楚了=。=+噩梦醒了吧。
分享到:
评论

相关推荐

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(9):根本没有“JSON对象”这回事 深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解...

    JavaScript程序设计课件:函数的调用方式.pptx

    JavaScript程序设计 函数的调用方式 5.2.2 函数的调用方式 概念 当函数定义完成后,要想在程序中发挥函数的作用,必须得调用这个函数。 函数的调用非常简单,只需引用函数名,并传入相应的参数即可。 函数声明与调用...

    JavaScript权威指南(第6版).JavaScript:The.Definitive.Guide

    原名: JavaScript: The Definitive Guide: Activate Your Web Pages, 6th edition 作者: David Flanagan 版本: 英文文字版-pdf/EPUB + 完整书中源代码 出版社: O'Reilly 书号: 978-0596805524 发行时间: 2011年05月...

    Javascript类的继承,使用this.callParent调用超类方法

    在本话题中,我们将深入探讨JavaScript中的类继承,并特别关注`this.callParent`这个方法,它是如何被用来调用超类方法的。 首先,让我们了解JavaScript中的构造函数。构造函数是一种特殊的函数,用于创建和初始化...

    javascript callApply代码示例

    javascript callApply代码示例

    JavaScript实例自学手册:通过486个例子掌握WEB开发捷径

    全书分两个分卷,共23章.通过大量实例源码讲述各种JS运用.

    02-Javascript重难点实例精讲之引用数据类型

    Javascript重难点实例精讲之 引用数据类型

    【JavaScript源代码】JavaScript函数之call、apply以及bind方法案例详解.docx

    JavaScript中的call、apply和bind方法都是用来改变函数调用时的上下文(即this值)以及传递参数。它们之间的相同点在于,都能够指定函数执行时的this对象,并且都能接收参数。不同点在于它们的调用方式和执行时机。 ...

    javascript中apply、call和bind的用法区分_.docx

    在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,但在具体用法上存在一定的差异。 #### 相同之处...

    深入理解JavaScript系列(汤姆大叔)

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    网页javascript脚本语言提取器

    - JSCall可能是指JavaScript调用,工具可能分析JavaScript代码中的函数调用,理解其逻辑和依赖关系。 - 分析这些调用有助于理解脚本如何操作页面元素,触发特定行为,以及它们之间的关系。 5. **使用工具进行脚本...

    javascript

    JavaScript是一种广泛用于网页开发的脚本语言,它是实现Web前端交互功能的核心技术之一。在给定的文件内容中,我们可以提取到关于JavaScript的多个知识点: 1. JavaScript的变量类型:JavaScript中主要有几种基本的...

    Javascript技术难点之apply,call与this之间的衔接

    标题和描述所包含的知识点是关于JavaScript中apply、call方法以及它们与函数中的this关键字之间的关系。apply和call是JavaScript中的两个方法,它们都用于改变函数内部的this指向,但有所不同。 apply方法接受两个...

    JavaScript核心技术 PDF扫描版

    JavaScript核心技术 简介: 《JavaScript核心技术》对于各种浏览器、浏览器版本、JavaScript版本、DOM版本的介绍,有助于我们理解所遇到的各种新旧代码,使我们能够对这些代码做出正确的取舍。《JavaScript核心技术》...

    跟我学习javascript的call(),apply(),bind()与回调

    本文将详细解释JavaScript中call(), apply(), 和 bind() 方法的作用、语法以及使用场景,并且会探讨回调函数的使用,帮助理解这些概念在实际编程中的应用。 首先,我们来探讨call() 和 apply() 方法。这两个方法都...

    web前端重点业务难点

    4. a 标签的 href 属性可以设置 JavaScript 代码,例如 `href="javascript:void(0)"`,这样可以避免页面跳转,同时也可以使用 JavaScript 函数进行处理。 5. form 表单中的提交按钮可以绑定 onclick 事件,通过 ...

    Html+Css+Javascript从入门到精通.pdf

    - **特点与其他语言对比**:JavaScript的独特之处。 - **运行环境**:介绍JavaScript执行的环境。 - **简单示例**:编写第一个JavaScript程序。 **第十七章:JavaScript基本数据结构** - **代码嵌入方法**:将...

    javascript与flex交互

    #### 三、Flex调用JavaScript方法 **1. Flex调用JavaScript方法** - **语法示例**: ```actionscript ExternalInterface.call("javascriptfunction", "param"); ``` - **解释**:这段代码表示通过Flex的`...

Global site tag (gtag.js) - Google Analytics