-
2007-09-27
arguments 类
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://wxsr.blogbus.com/logs/10047500.html
Posted:2007-02-26 12:40 arguments 类 arguments 类(包含3个属性)
|__ callee:Object;对当前正在执行的函数的引用。
|__caller:Object;对调用当前正在执行的函数的函数的引用;如果未从其它函数调用它,则为null。|__length:Number;传递给函数的参数数目。
说到这个类可能有的朋友不怎么熟悉,但他却很有用。下面说说他的一些用法跟扩展。arguments :arguments对象用于存储和访问函数的参数。尽管它在函数体内部,也可以用本地arguments变量对其进行访问。这些参数作为数组元素存储,第一个参数作为 arguments[0] 被访问,第二个参数作为 arguments[1] 被访问,依此类推。
arguments.length 属性表示传递给函数的参数数目。请注意,传递给函数的参数与该函数声明的参数的数目可能不同。
先举个简单的例子:
function 字母(){
for(var i=0;i <arguments.length;i++){
trace(arguments[i]);
}
}
字母("a","b","c","d","e");
从这个例子我们可以看到尽管函数 :字母()没有预定义变量但我们却可以通过arguments访问后来才定义的变量
再来看个例子
function num(argu)
{for(var i=0;i <arguments.length;i++)
{trace(arguments[i]);}
}
num (1,2,3,4,5)
这里我们又可以看出尽管num()函数里我们只是定义了一个变量但我们却也可以通过
arguments 的方法访问到后来才定义的变量;
下边看个例子帮助理解下caller属性:
var function1:Function = function () {
function2 ("hello来自function1");
};
var function2:Function = function (aString:String) {
if (arguments.caller == function1) {
trace ("function2被function1引用");
trace (aString);
}
};
function1 ();
现在理解了吧~~
现在我们来深入了解下~arguments的用法:
看下边个例子
function type (argu) {
for (var i = 0; i < arguments.length; i++) {
arguments[i].func ();
for (var j in arguments[i]) {
if (arguments[i].link == "No1") {
trace ("新属性=" + arguments[i].link);
bol = true;
}
if (arguments[i].link == "No2") {
trace ("新属性=" + arguments[i].link);
bol = true;
}
if (bol) {
delete bol;
break;
}
}
}
}
type ({link:"No1", func:No1_func}, {link:"No2", func:No2_func});
function No1_func () {
var tmp = 0;
trace ("No1_func");
if (arguments.callee == No1_func) {
child_func1 ();
}
}
function child_func1 () {
trace ("child_func1");
}
function No2_func () {
var tmp = 2;
trace ("No2_func");
if (arguments.callee == No2_func) {
child_func2 ();
}
}
function child_func2 () {
trace ("child_func2");
}
当你理解了就会发现arguments的好用了~~
收藏到:Del.icio.us






评论