`
yunmoxue
  • 浏览: 284746 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

js call 用法<转>

阅读更多
原文地址:
http://hi.baidu.com/kings_1981/blog/item/b220e43d08df74c09f3d6225.html
call 方法
请参阅
应用于:Function 对象
要求
版本 5.5
调用一个对象的一个方法,以另一个对象替换当前对象。

call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

-------------------------------------------------------------------------------------------
乍一看,很容易把人看迷胡,先做一些简单的说明
obj1.method1.call(obj2,argument1,argument2)
如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入.

举一个具体的例子
function add(a,b)
{
    alert(a+b);
}
function sub(a,b)
{
    alert(a-b);
}

add.call(sub,3,1);


这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。


看一个稍微复杂一点的例子

function Class1()
{
    this.name = "class1";

    this.showNam = function()
    {
        alert(this.name);
    }
}

function Class2()
{
    this.name = "class2";
}

var c1 = new Class1();
var c2 = new Class2();

c1.showNam.call(c2);


注意,call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是 :alert("class2");

怎么样,觉得有意思了吧,可以让a对象来执行b对象的方法,这是java程序员所不敢想的。还有更有趣的,可以用 call 来实现继承
function Class1()
{
    this.showTxt = function(txt)
    {
        alert(txt);
    }
}

function Class2()
{
    Class1.call(this);
}

var c2 = new Class2();

c2.showTxt("cc");


这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,执行结果就是:alert(“cc”);

对的,就是这样,这就是 javaScript 如何来模拟面向对象中的继承的,还可以实现多重继承。

function Class10()
{
    this.showSub = function(a,b)
    {
        alert(a-b);
    }
}

function Class11()
{
    this.showAdd = function(a,b)
    {
        alert(a+b);
    }
}


function Class2()
{
    Class10.call(this);
    Class11.call(this);
}


很简单,使用两个 call 就实现多重继承了
当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴,只是在此说明call 的用法
说了call ,当然还有 apply,这两个方法基本上是一个意思
区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组
分享到:
评论

相关推荐

    AJAX 源码范例

    06/6.1.6.html prototype原型对象范例&lt;br&gt; 06/6.2.6.html 函数的apply、call方法和length属性范例&lt;br&gt; 06/6.2.7.html 深入认识JavaScript中的this指针范例&lt;br&gt; 06/6.3.2.html 使用prototype对象定义类成员...

    DWR中文文档.pdf

    engine.js 功能 47&lt;br/&gt;6.1 使用选项 47&lt;br/&gt;6.2 选项索引 48&lt;br/&gt;6.2.1 处理器(Handler) 48&lt;br/&gt;6.2.2 调用处理器(Call Handler) 48&lt;br/&gt;6.2.3 Hooks (一个batch中可以注册多个hook) 49&lt;br/&gt;6.2.4 全局选项(在单次...

    w3c中文版(html5、css、ajax、asp、js、dhtml)

    &lt;br&gt;CALLCALL朋友给我提供方法也是无法解决..之后我去了官方查找原因..终于找出问题了!! &lt;br&gt;现在把他分享出来,希望有碰到跟我一样的情况下的朋友可以有所帮助!! &lt;br&gt;症状 &lt;br&gt;安装安全更新 896358 或 890175 后,...

    网上购物系统

    其判断函数如下(采用Javascript脚本语言编写):&lt;/P&gt; &lt;p&gt;//功能介绍:检查是否为数字&lt;/P&gt; &lt;p&gt;//参数说明:要检查的数字&lt;/P&gt; &lt;p&gt;//返回值:1为是数字,0为不是数字&lt;/P&gt; &lt;p&gt;function fucCheckNUM(NUM)&lt;/P&gt; &lt;p&gt;{&lt;/P&gt; &lt;p&gt;...

    自己写的 Ajax js类

    这对时间使用了很多的Ajax程序,但是多多少少都有些不足,(主要是不能满足我的需要,呵呵!)因此自己动手写了一个Ajax。...3.AjaxForm方法,实现了,直接提交 Form(参照了很多人的方法)&lt;br&gt;&lt;br&gt;85%原创。&lt;br&gt;&lt;br&gt;

    callsign.js:with使用此JavaScript库突出显示网页中的呼号

    用&lt;call&gt; &lt;call&gt; : &lt; p&gt; I had contact with &lt; call&gt; SM8AYA &lt;/ call&gt; on shortwave. &lt;/ p&gt;选项可以在&lt;link&gt;标记中将选项设置为属性。 名称默认描述data-flag true 在呼号前显示国旗。 data-monospace true ...

    Commission-Free-Scripted-Stock-Trading:在命令行中使用Robinhood API进行股票交易。 快速管理和下订单,而无需浏览很多页面

    b &lt;ticker&gt; &lt;price&gt; &lt;total&gt; 出售: s &lt;ticker&gt; &lt;price&gt; &lt;total&gt; 其他命令 i : to view info o : to view orders c &lt;index&gt; : to cancel an order. Must follow a call to orders using 'o' p : to view current ...

    js使用小技巧

    &lt;a href="javascript:function()"&gt;word&lt;/a&gt; 上一网页源 asp: request.servervariables("HTTP_REFERER") javascript: document.referrer 释放内存 CollectGarbage(); 禁止右键 document.oncontextmenu = ...

    动易博客日历插件(20081212)

    Posted By&lt;FONT color=#91d52b&gt; &lt;/FONT&gt;{$Field(2,Text,0,2,1)} &lt;A href="{$InstallDir}{$Field(0,GetUrl,Article,1)}" target=_blank&gt;&lt;STRONG&gt;阅读全文&gt;&gt;&lt;/STRONG&gt;&lt;/A&gt; 阅读次数:{$Field(3,Num,0,0)} &lt;/td&gt; &lt;/tr...

    twilio-voice-call-action:发出Twilio语音呼叫的GitHub动作

    &lt;String&gt; twilio_auth_token 是的 Twilio身份验证令牌 &lt;String&gt; 文本 是的 将通过语音呼叫发送的文本。 &lt;String&gt; 从 是的 您的Twilio帐户中的电话号码,用于从以下位置发送语音呼叫 &lt;String&gt; 至 是的 发送...

    meteor-ddp-tools:DDP 的命令行工具

    &gt; ddp call &lt; method&gt; [ &lt; param&gt; &lt; param&gt; ...] &gt; ddp subscribe &lt; subscription&gt; [ &lt; param&gt; &lt; param&gt; ...] &gt; ddp subscribe-multi &lt; subscription&gt; [ &lt; subscription&gt; &lt; subscription&gt; ...]

    DWR.xml配置文件说明书(含源码)

    默认的时候DWR将java void值转换成javascript的null值就是这样设置&lt;convert converter="null" match="void"/&gt;. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的&lt;convert converter="null" match="java....

    react-aggregation:React Call Return的替代实现

    const Two = ( ) =&gt; &lt; Option xss=removed&gt; Two &lt; / Option &gt; ; const SelectDemo = ( ) =&gt; ( &lt; Select initialValue = "one" &gt; &lt; Option xss=removed&gt; &lt; b&gt; One &lt; / b &gt; &lt; / Option &gt; &lt; Two&gt; ...

    console.html:添加console.html方法,可以漂亮的输出HTML字符串HTMLNode

    控制台.html 为方便起见,添加了 console.html 方法 安装: npm install console.html --savebower install console.html --save在节点中使用: // call once somewhere in the beginningrequire('console.html');...

    Synchronous Javascript call using Scriptable XML webservice (SJAX)

    Synchronous Javascript call using Scriptable XML webservice (SJAX)。 http://www.linjon.cn, 成都领君科技有限公司

    hidashhi-cordova:支持 HidashHi 平台的 Cordova 插件

    安装插件后,您可以使用所述的 HidashHi JavaScript API。 结束通话 为了结束通话,您必须调用以下插件方法: cordova.plugins.hidashhi.endCall(); 此方法与房间断开连接并清理 UI 和内部 WebRTC

    PersistentJXA:JXA中的macOS持久性方法和其他工具的集合

    jsimport_call &lt; NameOfPersistenceScript&gt; ( ScriptArguments ) 项目 描述 用法 人工制品 执行的命令行命令 AtomPersist 使用Atom初始化脚本的持久性。 附加Atom初始化脚本以执行我们的命令。 持久性在Atom打开时...

    js call方法详细介绍(js 的继承)

    主要介绍了js call方法使用方法,有需要的朋友可以参考一下

    js中apply与call简单用法详解.docx

    js中apply与call简单用法详解.docx

    微软JavaScript手册

    call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码...

Global site tag (gtag.js) - Google Analytics