龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

javascript apply用法

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
在js中call和apply方法,其作用基本相同,但也有略微的区别,下面我们主要是介绍一下apply的用法 funObj.apply([thisObj[,argArray]]) 应用某一对象的一个方法,用另一个对象替换当前对象。 func
在js中call和apply方法,其作用基本相同,但也有略微的区别,下面我们主要是介绍一下apply的用法

funObj.apply([thisObj[,argArray]])


应用某一对象的一个方法,用另一个对象替换当前对象。

functionObj的方法执行时,函数中的this对象会被thisObj替换掉。

 

thisObj 可选项。将被用作当前对象的对象。

argArray 可选项。将被传递给该函数的参数数组。

 

//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)

其它

对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])

同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入


精彩图集

赞助商链接