WEB开发网
开发学院网页设计JavaScript Javascript进阶 阅读

Javascript进阶

 2010-09-14 13:44:42 来源:WEB开发网   
核心提示: varargs=[];//emptyarray//copyallotherargumentswewantto"passthrough"for(vari=2;i<arguments.length;i++){args.push(arguments[i]);}func.

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"));

上一页  1 2 3 4 5 6 7  下一页

Tags:Javascript 进阶

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接