JavaScript中apply()与call()的区别
来源:互联网 发布:蝎子网络第一季百度云 编辑:程序博客网 时间:2024/05/22 12:01
apply()与call()的应用充分体现了JavaScript的动态变换运行时上下文特征,call,apply两个方法的示例如下:
foo.call(this,arg1,arg2,arg3)==foo.apply(this,arguments)==this.foo(arg1,arg2,arg3)
参数:this是方法执行时上下文相关对象,arg1,arg2,arg3是传给foo方法的参数。所谓的方法执行时上下文对象,就是在类实例化后对象中的this.
相同点:call()方法与apply()方法都属于Function.Prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.Prototype,所以每个Function对象实例额,也就是每个方法都有call,apply属性,既然作为方法的属性,那它们的使用就当然是针对方法的。
不同点:方法的传递的第二个参数不同。在JavaSript中,代码总是有一个上下文对象,代码处理该对象之内。上下文对象是通过this变量来体现的,这个this对象永远指向当前代码所处的对象中。
应用实例:
var b=new B(); b.setMessage.call(a,"a的消息"); alert(a.getMessage);//a的消息
注意:a本身并没有这个方法 b.setMessage.call(a,"a的消息");就等于在a作执行时的上下文对象调用b对象的setMessage,而且这个过程和b一点关系也没有。 call,apply作用就是借用别人的方法来调用,就像调用自己的一样。 相异之处示例:
function print(a,b,c,d) { alert(a+b+c+d); } function example(a,b,c,d) { print.call(this,a,b,c,d); print.apply(this,argumrnts); print.apply(this,[a,b,c,d]) } example("bei","guang","jiao","bei");
在example方法中的上下文对象this是指window对象。所以,call,apply方法除了第一个参数——执行时上下文对象相同外,call方法的其他参数将依次传递给借用的方法作参数,而apply,第二个参数为一个数组传递。
call, apply方法区别是,从第二个参数起, call方法参数将依次传递给借用的方法作参数,
而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的.
0 0
- JavaScript中apply()与call()的区别
- javascript中apply与call的应用与区别
- javascript 中call与apply区别
- JavaScript中apply与call的用法意义及区别
- Javascript中call和apply的区别与详解
- JavaScript中apply与call的用法意义及区别
- Javascript中call和apply的区别与详解
- javascript中apply()和call()方法的关系与区别
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- JavaScript中apply()、call()和bind()的相似与区别
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- JavaScript中的call与apply的区别
- javascript 中apply 和call的区别
- Javascript 中 apply() 和 call() 的区别
- javascript中call()和apply()的区别
- json
- 也谈智能制造或工业4.0
- [leetcode] 【数组】 137. Single Number II
- html文字有光晕
- JNDI(一) 之 Naming and Directory Concepts
- JavaScript中apply()与call()的区别
- 自定义手势密码
- hdu2859(最大对称矩阵)
- Android Framework
- 笔试题69. LeetCode OJ (56)
- 在Drupal在统计记录的数量
- 手机上那些排版优雅的文章是怎么实现的?
- WebSphere Comments Collections组件反序列化漏洞(CVE-2015-7450)
- DNS域名解析基础知识