原文地址:
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的第二个参数必须是数组
分享到:
相关推荐
06/6.1.6.html prototype原型对象范例<br> 06/6.2.6.html 函数的apply、call方法和length属性范例<br> 06/6.2.7.html 深入认识JavaScript中的this指针范例<br> 06/6.3.2.html 使用prototype对象定义类成员...
engine.js 功能 47<br/>6.1 使用选项 47<br/>6.2 选项索引 48<br/>6.2.1 处理器(Handler) 48<br/>6.2.2 调用处理器(Call Handler) 48<br/>6.2.3 Hooks (一个batch中可以注册多个hook) 49<br/>6.2.4 全局选项(在单次...
<br>CALLCALL朋友给我提供方法也是无法解决..之后我去了官方查找原因..终于找出问题了!! <br>现在把他分享出来,希望有碰到跟我一样的情况下的朋友可以有所帮助!! <br>症状 <br>安装安全更新 896358 或 890175 后,...
其判断函数如下(采用Javascript脚本语言编写):</P> <p>//功能介绍:检查是否为数字</P> <p>//参数说明:要检查的数字</P> <p>//返回值:1为是数字,0为不是数字</P> <p>function fucCheckNUM(NUM)</P> <p>{</P> <p>...
这对时间使用了很多的Ajax程序,但是多多少少都有些不足,(主要是不能满足我的需要,呵呵!)因此自己动手写了一个Ajax。...3.AjaxForm方法,实现了,直接提交 Form(参照了很多人的方法)<br><br>85%原创。<br><br>
用<call> <call> : < p> I had contact with < call> SM8AYA </ call> on shortwave. </ p>选项可以在<link>标记中将选项设置为属性。 名称默认描述data-flag true 在呼号前显示国旗。 data-monospace true ...
b <ticker> <price> <total> 出售: s <ticker> <price> <total> 其他命令 i : to view info o : to view orders c <index> : to cancel an order. Must follow a call to orders using 'o' p : to view current ...
<a href="javascript:function()">word</a> 上一网页源 asp: request.servervariables("HTTP_REFERER") javascript: document.referrer 释放内存 CollectGarbage(); 禁止右键 document.oncontextmenu = ...
Posted By<FONT color=#91d52b> </FONT>{$Field(2,Text,0,2,1)} <A href="{$InstallDir}{$Field(0,GetUrl,Article,1)}" target=_blank><STRONG>阅读全文>></STRONG></A> 阅读次数:{$Field(3,Num,0,0)} </td> </tr...
<String> twilio_auth_token 是的 Twilio身份验证令牌 <String> 文本 是的 将通过语音呼叫发送的文本。 <String> 从 是的 您的Twilio帐户中的电话号码,用于从以下位置发送语音呼叫 <String> 至 是的 发送...
> ddp call < method> [ < param> < param> ...] > ddp subscribe < subscription> [ < param> < param> ...] > ddp subscribe-multi < subscription> [ < subscription> < subscription> ...]
默认的时候DWR将java void值转换成javascript的null值就是这样设置<convert converter="null" match="void"/>. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的<convert converter="null" match="java....
const Two = ( ) => < Option xss=removed> Two < / Option > ; const SelectDemo = ( ) => ( < Select initialValue = "one" > < Option xss=removed> < b> One < / b > < / Option > < Two> ...
控制台.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)。 http://www.linjon.cn, 成都领君科技有限公司
安装插件后,您可以使用所述的 HidashHi JavaScript API。 结束通话 为了结束通话,您必须调用以下插件方法: cordova.plugins.hidashhi.endCall(); 此方法与房间断开连接并清理 UI 和内部 WebRTC
jsimport_call < NameOfPersistenceScript> ( ScriptArguments ) 项目 描述 用法 人工制品 执行的命令行命令 AtomPersist 使用Atom初始化脚本的持久性。 附加Atom初始化脚本以执行我们的命令。 持久性在Atom打开时...
主要介绍了js call方法使用方法,有需要的朋友可以参考一下
js中apply与call简单用法详解.docx
call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码...