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

【转】javascript call apply

阅读更多

  javascript call apply 收藏
call方法在msdn中的解释  调用一个对象的一个方法,以另一个对象替换当前对象。

apply方法在msdn中的解释 应用某一对象的一个方法,用另一个对象替换当前对象。

这个解释也是非常抽象的,这两个方法的作用基本是一样的,举个例子

<script>
function cls1()
{
  this.a='123';
}
cls1.prototype.fun1=function()
{
  alert(this.a);
}
function cls2()
{
  this.a='456';
}
var o1=new cls1();
var o2=new cls2();
o1.fun1.apply(o2);
</script>

只有o1对象的类cls1中有fun1这个方法,但是,这时我们需要用o2对象替代o1对象,所以这个时候显示的this.a会是456,呵呵很神奇吧,换成call方法也是一样的,这两种方法使用的不同点仅仅是参数的使用方法上不同,这里就不多做解释了。

 

,函数的apply与call方法
   这2个方法,困扰我很久,后来经过反复试用,终于弄明白.

apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:
Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2…]]);
从函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个对象的方法运行的目的。两个方法除了thisArg参数,都是为Function对象传递的参数。下面的代码说明了apply和call方法的工作方式:
//定义一个函数func1,具有属性p和方法A
function func1(){
      this.p="func1-";
      this.A=function(arg){
            alert(this.p+arg);
      }
}
//定义一个函数func2,具有属性p和方法B
function func2(){
      this.p="func2-";
      this.B=function(arg){
             alert(this.p+arg);
      }
}
var obj1=new func1();
var obj2=new func2();
obj1.A("byA");     //显示func1-byA
obj2.B("byB");     //显示func2-byB
obj1.A.apply(obj2,["byA"]); //显示func2-byA,其中[“byA”]是仅有一个元素的数组,下同
obj2.B.apply(obj1,["byB"]); //显示func1-byB
obj1.A.call(obj2,"byA");   //显示func2-byA
obj2.B.call(obj1,"byB");   //显示func1-byB
可以看出,obj1的方法A被绑定到obj2运行后,整个函数A的运行环境就转移到了obj2,即this指针指向了obj2。同样obj2的函数B也可以绑定到obj1对象去运行。代码的最后4行显示了apply和call函数参数形式的区别。
与arguments的length属性不同,函数对象还有一个属性length,它表示函数定义时所指定参数的个数,而非调用时实际传递的参数个数。例如下面的代码将显示2:
function sum(a,b){
      return a+b;
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bjbs_270/archive/2009/01/10/3746157.aspx

分享到:
评论

相关推荐

    javascript callApply代码示例

    javascript callApply代码示例

    JavaScript中call与apply方法

    JavaScript中call与apply方法

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...

    关于Javascript中call与apply的进一步探讨

    在JavaScript中,`call`和`apply`是两个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`的值),并且可以灵活地传递参数。本篇文章将深入探讨这两个方法的用法、区别以及实际应用场景。 `call`方法...

    javascript中apply和call方法的作用及区别说明

    1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...

    淡淡简单描述javascript中方法apply和call

    淡淡简单描述javascript中方法apply和call

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

    ### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...

    javascript中call apply 的应用场景

    call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.

    javascript中call和apply方法浅谈

    在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向,实现函数的动态绑定。这两个方法都是Function对象的原型方法,可以应用到任何函数上。 首先,让我们深入理解`...

    开启Javascript中apply、call、bind的用法之旅模式

    为了控制函数的this指向,JavaScript提供了apply、call以及bind方法。以下详细解释了apply、call以及bind的用法,并通过实例加深理解。 1. apply()和call()方法 apply()和call()方法都用于指定函数体内this的值。...

    浅谈javascript中的call、apply、bind_.docx

    JavaScript 中的 call、apply、bind 方法详解 JavaScript 中的 call、apply、bind 方法是 Function 对象自带的三个方法,这三个方法的主要作用是转变函数中的 this 指向,从而可以达到“接花移木”的效果。下面将对...

    Javascript - 全面理解 caller,callee,call,apply (转载)

    这篇文章将深入探讨四个关键概念:caller、callee、call和apply,它们都是JavaScript函数操作的核心部分,对于理解和使用高级JavaScript编程至关重要。 首先,我们来了解`caller`和`callee`。在JavaScript的函数...

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

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

    深化理解关于javascript中apply()和call()方法的区分_.docx

    在JavaScript中,`apply()`和`call()`方法都是用于改变函数调用时的上下文(即`this`关键字指向的对象)以及传递参数。这两个方法都隶属于`Function.prototype`,因此所有函数实例都拥有这两个方法。它们的主要作用...

    javascript call和apply方法

    在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文,即`this`的指向。`this`在JavaScript中是一个非常关键的概念,它通常指代函数执行时所在的对象。下面我们将深入...

    JavaScript中的apply和call函数详解_.docx

    在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向以及动态传递参数。这两者的主要区别在于参数的传递方式。 首先,`this`在JavaScript中是一个关键字,它在不同...

    JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题

    在JavaScript编程中,`call` 和 `apply` 是两种非常重要的方法,它们允许我们改变函数内部 `this` 的指向。这两个方法在处理事件绑定时尤其关键,因为默认情况下,当JavaScript对象的方法被绑定到DOM事件上,事件...

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

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

    Javascript call及apply应用场景及实例

    在JavaScript中,`call` 和 `apply` 是两个非常重要的函数,它们都是 `Function` 类型的实例方法。这两个方法的主要作用在于改变函数执行时的上下文(即 `this` 指向),这对于理解和实现面向对象编程(OOP)至关...

    Javascript中call,apply,bind方法的详解与总结

    本文针对JavaScript中三个重要的函数方法——call、apply和bind,进行详尽的分析,并在文章的结尾部分对这三个方法之间的联系和区别进行了概括,以便于读者更深入地理解它们的用途和应用场景。 首先,我们来探讨...

Global site tag (gtag.js) - Google Analytics