javascript call 函数详解

call 主要应用于function 对象,要求javascript  必须是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 a(x,y){
	alert(x+y);
  }
  function b(x,y){
   alert(x*y);
  }
  a.call(b,3,4)

如上:这个例子就是a 代替 b ,a.call(b,3,4)==a(3,4);  //注意js 中函数是对象,函数名是对象的引用。

再看一个例子:所

  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);

上面的意思是把c1的方法放到c2 执行,原本c2 没有showNam方法,通过call 那么c2 也就有了call 的方法。所以结果是alert(class2);

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 不就有 c1所有属性和方法吗?c2 对象就能够直接调用Class1
的方法以及属性了,执行结果就是:alert(“cc”);

其实call 还可以实现多重继承:

  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);
 }

 var a=new class2();
 a.showsub(3,4);
 a.showadd(4,5);

这样就实现了双重继承。

时间: 2024-10-27 13:14:28

javascript call 函数详解的相关文章

JavaScript valueOf() 函数详解

valueOf()函数用于返回指定对象的原始值. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. 所有主流浏览器均支持该函数. 语法 object.valueOf( ) 返回值 valueOf()函数返回指定对象的原始值. JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要.因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同. 对象 返回值 Array 数组实例对象.

JavaScript toString() 函数详解

toString()函数用于将当前对象以字符串的形式返回. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. 所有主流浏览器均支持该函数. 语法 object.toString( ) 返回值 toString()函数的返回值为String类型.返回当前对象的字符串形式. JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要. 类型 行为描述 Array 将 Array 的每个元素转换为字符串,

JavaScript toString() 函数详解【转】

toString()函数用于将当前对象以字符串的形式返回. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. 所有主流浏览器均支持该函数. 语法 object.toString( ) 返回值 toString()函数的返回值为String类型.返回当前对象的字符串形式. JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要. 类型 行为描述 Array 将 Array 的每个元素转换为字符串,

JavaScript hasOwnProperty() 函数详解

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性.如果有,返回true,否则返回false. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. IE 5.5+.FireFox.Chrome.Safari.Opera等主流浏览器均支持该函数. 语法 object.hasOwnProperty( propertyName ) propertyName:string类型,指定参

javascript console 函数详解 js开发调试的利器 浏览:3201|更新:2014-05-30 09:27

引用地址: http://jingyan.baidu.com/article/e75aca855c6419142edac6c1.html 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中. 使用 alert 不是一样可以显示信息,调试程序吗?alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死.而且 a

javascript常用函数详解

1,splice().    arrayObject.splice(index,howmany,item1,.....,itemX) 参数 index 必需.整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置. howmany 必需.要删除的项目数量.如果设置为 0,则不会删除项目. item1, ..., itemX 可选.向数组添加的新项目. 返回值 返回处理后的数组. 备注  所有主流浏览器都支持 splice() 方法. <script type="text/javas

(转)JavaScript hasOwnProperty() 函数详解

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性.如果有,返回true,否则返回false. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. IE 5.5+.FireFox.Chrome.Safari.Opera等主流浏览器均支持该函数. 语法 object.hasOwnProperty( propertyName ) 参数 参数 描述 propertyName Str

javascript 函数详解2 -- arguments

今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascript 函数详解2 -- arguments Javascript 函数详解3 -- this对象 Javascript 函数详解4 -- 函数的其他属性 Javascript 函数详解5 -- 函数对象的内部函数 arguments对象参数数组引用 arguments是函数对象内部一个比较特殊的类数组

JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 exec方法的返回值 exec方法返回的其实并不是匹配结果字符串,而是一个对象,简单地修改一下execReg函数,来做一个实验就可以印证这一点: function execReg(reg, str) { var result = reg.exec(str); alert(typeof result