Javascript中call和apply的区别和用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Javascript 中call 和apply 的区别和用法
JavaScript 中有一个call 和apply 方法,其作用基本相同,但也有略微的区别。其
实就是更改对象的内部指针,即改变对象的this 指向的内容。这在面向对象的js 编
程过程中有时是很有用的。call 函数和apply 方法的第一个参数都是要传入给当前对
象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。如下:
script var func=new function(){this.a=“func”}var myfunc=function(x){ var a=“myfunc”;alert(this.a); alert(x); } myfunc.call(func,”var”);/script 可见分别弹出了func 和var。到这里就对call 的每个参数的意义有所了解了。对于apply 和call 两者
在作用上是相同的,但两者在参数上有区别的。对于第一个参数意义都一样,但对
第二个参数:apply 传入的是一个参数数组,也就是将多个参数组合成为一个数组传
入,而call 则作为call 的参数传入(从第二个参数开始)。如
func.call(func1,var1,var2,var3)对应的apply 写法为:func.apply(func1,[var1,var2,var3]) 同时使用apply 的好处是可以直接将当前函数的arguments 对象作为apply 的第二个
参数传入。常用实例1、这个例子中的意思就是用add 来替换sub,add.call(sub,3,1) == add(3,1) ,因此运行结果为:alert(4);// 注意:js 中的函数其实是对象,函数名是对Function 对象的引用。
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);2、call 的意思是把animal 的方法放到cat 上执行,原来cat 是没有showName() 方法,现在是把animal 的showName()方法放到cat 上来执行,因此 应该是Cat
function Animal(){ = “Animal”;this.showName = function(){ alert(); } } function Cat(){ = “Cat”;} var animal = new Animal(); var cat = new Cat(); //通过call 或apply 方法,将原本属于Animal 对象的showName()方法交给对象cat 来使用了。//输入结果为”Cat”animal.showName.call(cat); //animal.showName.apply(cat,[]); 3、Animal.call(this) 的意