源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript中apply与call的用法意义及区别说明

  • 时间:2020-05-28 23:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript中apply与call的用法意义及区别说明
apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2…]]); 从函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个对象的方法运行的目的。两个方法除了thisArg参数,都是为Function对象传递的参数。下面的代码说明了apply和call方法的工作方式:
[url=http://www.1sucai.cn/article/23421.htm]如需引入外部Js需刷新才能执行[/url]]
call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。 运行如下代码:
[Ctrl+A 全选 注:[url=http://www.1sucai.cn/article/23421.htm]如需引入外部Js需刷新才能执行[/url]]
可见分别弹出了func和var。到这里就对call的每个参数的意义有所了解了。 对于apply和call两者在作用上是相同的,但两者在参数上有区别的。 对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3]) 同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入 [b]javascript apply用法[/b] 补充 funObj.apply([thisObj[,argArray]]) 应用某一对象的一个方法,用另一个对象替换当前对象。 functionObj的方法执行时,函数中的this对象会被thisObj替换掉。 thisObj 可选项。将被用作当前对象的对象。 argArray 可选项。将被传递给该函数的参数数组。
[u]复制代码[/u] 代码如下:
//apply在对象继承方面的应用,不使用prototype,隐式的将父对象属性赋给了子对象 function par(name) { this.parname=name; } function child(chname,parname){ this.chname=chname; par.apply(this,new Array(parname)); }; var o=new child("john","Mr john"); alert(o.parname+";"+o.chname); //apply可以在通用的方法调用方面进行使用 window.onunload=function() { alert("unload event is fired!"); } function sayBye(name,toName) { alert(name+" says bye to "+toName); } function sayEndBiz(name,toName,content) { alert(name+" ends his talk about "+content +" with "+toName); } function addTo(args,func) { var oldHandler=window.onunload||function(){}; window.onunload=function() { func.apply(window,args); oldHandler.apply(window, args); } } addTo(new Array("John","everyone"),sayBye); addTo(new Array("John","everyone","deveopment strategy of the company"),sayEndBiz)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部