原文地址:
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的第二个参数必须是数组
分享到:
相关推荐
<code>call getOrders</code> <p>用 code 显示计算机代码,code 里显示的字符是等宽字符。</p> </body> </html> ``` 10. 超链接:`<a>`标签创建超链接,`href`属性指定链接的目标地址,`target`属性决定链接在...
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对象定义类成员...
<br>CALLCALL朋友给我提供方法也是无法解决..之后我去了官方查找原因..终于找出问题了!! <br>现在把他分享出来,希望有碰到跟我一样的情况下的朋友可以有所帮助!! <br>症状 <br>安装安全更新 896358 或 890175 后,...
在这个“D3.js基于javascript的图表展示库<六>-基本柱状图2”的教程中,我们将深入探讨如何使用D3.js来绘制一个基础的柱状图,并对一些关键知识点进行详细解释。 首先,创建柱状图的基础始于数据加载。D3.js提供了...
<p>Result: <% Call vbproc(3, 4) %></p> </body> </html> ``` 而在ASP中,你可以通过更改语言声明来使用JavaScript,如下所示: ```html <%@ language="javascript" %> <html> <head> <% function jsproc(num1, ...
<button onclick="callParentFunction()">Call Parent Function</button> <script> function callParentFunction() { // 使用parent属性访问父窗口,并调用其函数 window.parent.bb(); } </script> </body> ...
这对时间使用了很多的Ajax程序,但是多多少少都有些不足,(主要是不能满足我的需要,呵呵!)因此自己动手写了一个Ajax。...3.AjaxForm方法,实现了,直接提交 Form(参照了很多人的方法)<br><br>85%原创。<br><br>
<button id="callService">Call Service</button> <div id="result"></div> </body> </html> ``` 在这个示例中,当用户点击按钮时,jQuery会发送一个POST请求到WCF服务,传递输入的数值。服务响应后,结果会被...
<title>网页标题</title> </head> <body> <header> <h1>网页标题</h1> </header> <nav> <ul> <li><a href="section1.html">导航1</a></li> <li><a href="section2.html">导航2</a></li> <li><a href=...
<script type="text/javascript" src="/dwr/interface/YourClass.js"></script> <script type="text/javascript" src="/dwr/engine.js"></script> <script type="text/javascript"> YourClass.yourMethod.call({...
HTML的`<table>`元素是构建表格的基础,我们可以使用`<tr>`元素定义行,`<th>`元素定义表头单元格,`<td>`元素定义数据单元格。例如: ```html <table id="myTable"> <thead> <tr> <th>表头1</th> <th>表头2</...
本主题主要关注在Android平台上如何利用Java语言来调用API,特别是加载新闻数据和使用JavaScript库imag.js。 首先,理解API调用的基本概念至关重要。API通常是一组预定义的函数、类或方法,允许开发者通过发送请求...
<title>Flex-JS Interaction</title> <script type="text/javascript"> function callFlexMethod() { var result = myFlexApp.flexFunctionAlias(); alert(result); // 输出: "Hello from Flex!" } </script>...
<xsl:call-template name="StringReplace"> <xsl:with-param name="SrcString" select="substring-after($SrcString, $FromString)"/> <xsl:with-param name="FromString" select="$FromString"/> <xsl:with-...
<script src="weather.js"></script> </body> </html> ``` 这里的`weather.js`是包含上述js代码的脚本文件。将它放在HTML文件的`<script>`标签内,或者通过外部引用的方式加载。 总结起来,利用js读取Web Service...
2. **使用`<base>`标签**: `<base>`标签用于定义所有链接的基URL,包括脚本引用。如果页面中包含`<base href="..." />`,那么所有的相对URL都会基于这个基URL解析。你可以结合这个标签来获取脚本的绝对路径。示例...
用<call> <call> : < p> I had contact with < call> SM8AYA </ call> on shortwave. </ p>选项可以在<link>标记中将选项设置为属性。 名称默认描述data-flag true 在呼号前显示国旗。 data-monospace true ...
<input type="button" onclick="myfunction()" value="Call function"> </form> <script type="text/javascript"> function myfunction() { alert("HELLO"); } </script> ``` 这里的`onclick`属性定义了当按钮被...
要将它们转换为数组,可以使用`Array.prototype.slice.call()`方法: ```javascript var arrayArgs = Array.prototype.slice.call(arguments); var arrayNodes = Array.prototype.slice.call(document....
public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful()) { // 处理成功响应 } else { // 处理错误响应 } } @Override public void onFailure(Call<User> call...