`
zhiheng1001319
  • 浏览: 3828 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

call和apply的用法

阅读更多

call和 apply 可以看做是某个对象的方法,通过调用方法的形式来间接的调用函数.

call apply的第一个参数是要调用函数的母对象,它是调用的上下文,在函数体内通过this对它的引用。

For example:

要想以对象obj的方法来调用函数f

则为:f.call(obj) || f.apply(obj);

这段代码等价于:

obj.method=f  //f存储为obj的临时方法

obj.method()  //调用它,不传入参数

Ecmascript5严格模式中call()apply()的第一个参数都会变成this的值,哪怕传入的实参的类型是null || undefined 都会被全局对象代替,其它的原始值则会被相应的包装对象所替代.

a:对于call来说 第一个调用上下文实参之后的所有实参就是要传入待调用函数的值。

For example:

以对象obj的方法的形式调用函数f(),并传入两个参数:

f.call(obj,1,2);

b:apply()方法与call()方法类似,但传入的参数的形式有点不同,apply的参数都是放在一个数组中.

`For example:

F.call(obj,[1,2]);

如果一个参数的数量可以使任意数量个,则给apply()传入的参数数组可以是任意长度的.

**注意:apply()的参数数组可以使对象数组,也可以是真实数组**,可以将当前函数的arguments数组直接传入另一个函数的apply()来调用另一个函数.

  For example:

//把对象obj中的名为f的方法替换成另一个方法

//可以在调用原始的方法之前和之后记录日志消息 

function trace(obj,f){

  var original=obj[f];//在闭包中保存原始的方法

  obj[f]=function(){

  console.log(new date(),Entering,f);//输出日志消息

  var result=original.apply(this,arguments);//偷梁换柱调用原始函数

  console.log(new date(),Exting,f);//输出日志消息

  return result; 

  };

}

分享到:
评论

相关推荐

    js中call与apply的用法小结.docx

    js中call与apply的用法小结.docx

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

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

    JS中的call()和apply()方法的详解

    每个函数都包含两个非继承而来的方法:call() 方法和 apply() 方法 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,一般来说,this总是指向调用某个方法的对象,但是使用...

    Javascript 中的 call 和 apply使用介绍

    简单的说就是改变函数执行的上下文,... 这两个方法通常被用来类的继承和回调函数: 作用一、类的继承: 先来看这个例子: 代码如下: function Person(name,age){ this.name = name; this.age=age; this.alertName = f

    js中call与apply的用法小结

    前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们的作用都是将函数绑定到另外一个对象上去运行 两者的...

    JS中call和apply函数用法实例分析

    本文实例讲述了JS中call和apply函数用法。分享给大家供大家参考,具体如下: call 函数 语法 obj.call(thisObj,arg[,arg2[,arg3[,...agr]]]); 简介 thisObj继承obj的属性和方法(obj原型链上的属性和方法不能被继承),...

    Javascript中call和apply函数的比较和使用实例

    我们可以将call()和apply()看做是某个对象的方法,通过调用方法的实行来间接调用函数。call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用。要想对对象o的方法...

    javascript中call,apply,bind函数用法示例

    主要介绍了javascript中call,apply,bind函数用法,结合实例形式分析了call,apply,bind函数的功能、使用方法与相关注意事项,需要的朋友可以参考下

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

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

    javascript基于原型链的继承及call和apply函数用法分析

    主要介绍了javascript基于原型链的继承及call和apply函数用法,结合实例形式较为详细的分析了javascript中继承的概念、创建方法以及call和apply函数的功能与使用技巧,需要的朋友可以参考下

    详解js中call与apply关键字的作用

    本文主要介绍js中call与apply关键字的作用以及它们的用法,具体实例如下,希望对大家有所帮助

    js中apply与call简单用法详解

    call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。 call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现...

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

    以下内容会分为如下小节: ...6.call,apply,bind方法的联系和区别 1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法?

    javascript中call和apply的用法示例分析

    主要介绍了javascript中call和apply的用法示例分析,非常的详细,需要的朋友可以参考下

    javascript中call和apply方法浅谈

    例如,如果要想以对象o的方法来调用函数f,可以按如下的方式使用call和apply方法: 代码如下: f.call(o); f.apply(o);可以按如下的代码来理解: 代码如下: o.m = f; //将f存储为o的临时方法 o.m(); //调用这个...

    bind,apply,call的用法及区别

    bind,apply,call的用法及区别

    Function.prototype.call.apply结合用法分析示例

    昨天在网上看到一个很有意思的js面试题:var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]);alert(a); 分析步骤如下,感兴趣的朋友可以参考下哈

    全面了解构造函数继承关键apply call

     apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用. apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. ...

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

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

Global site tag (gtag.js) - Google Analytics