Javascript进阶
2010-09-14 13:44:42 来源:WEB开发网var args = []; // empty array
// copy all other arguments we want to "pass through"
for(var i = 2; i < arguments.length; i++)
{
args.push(arguments[i]);
}
func.apply(obj, args);
// 通过刚才的介绍,我们可以简化为:
var args = [].slice.call(arguments,2);
func.apply(obj, args);
四、arguments
在JavaScript函数代码中可以使用特殊的对象arguments来实现不定参数的效果。
它以类数组的形式保存了当前函数调用的参数,但是它实际上并不是数组,使用arguments instanceof Array会返回"false",不过我们可以使用下标获取其值以及长度length属性(表示调用参数的数目)。此外arguments还有个非常有用的属性callee,它表示对当前调用函数对象自身的引用,特别是可以用它来调用自身的匿名函数。
注:
1, 网上有不少方法说明arguments不是数组,大家有兴趣可以去看看。
2, 函数属于引用类型,有自己的属性和方法,其中length声明了函数期望的参数个数。
函数名.length或arguments.callee.length // 形参个数
arguments.length // 实参个数
请看下面这个经典例子--与C#中String.Format()方法类似:
String.prototype.format = function(){
var args = arguments; // 将参数保存到args中,以便于在stringobject.replace函数中被使用
return this.replace(/{(d+)}/g,
function(m,s,i,t){
return args[s]; // s是模式中子表达式匹配的字符串,正是{0},{1}中的0,1
});
}
var formats = "{0} is {1}!";
document.write(formats.format("hans","chinese"));
Tags:Javascript 进阶
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接