您的位置:首页 > Web前端 > JavaScript

【js】js中的隐藏对象arguments,caller,callee

2016-03-11 11:12 656 查看
1.arguments: an array-like object(像数组的对象,可以使用数组的length方法,不可以使用push,pop方法)

·arguments叫做函数内部的期望参数,而调用该函数传入的参数叫做实际传递参数

·栗子:

alert(add(3));                     //false
function add(x,y){
alert(arguments instanceof Object);  //true
alert(arguments instanceof Array);    //false
alert(arguments.callee.length);//实参长度,为2;
alert(arguments.length);//形参长度,为1;
if(arguments.length != arguments.callee.length){ //true
alert(arguments[0]);  //3
alert(arguments[1]);  //undefined
return false;
}
alert(arguments[0]);
alert(arguments[1]);
return x+y;
};


2.caller:在函数内部使用,返回函数的反编译文本,若在函数外部使用,返回为null.

·栗子:

<script type="text/javascript">
window.onload = function(){
alert(add(3));
alert(add.caller);  //null
};
function add(x,y){
alert(add.caller); //返回反编译函数
if(arguments.length != arguments.callee.length){
return false;
}
return x+y;
};
function plus(x,y){
return x-y;
};
</script>


返回的反编译函数如下:

function(){
alert(add(3));
alert(add.caller);
}

这里和toString()方法是有区别的:使用add.toString()方法返回如下,不论是在函数内调用还是在函数外调用:

function add(x,y){
alert(add.caller); //返回反编译函数
if(arguments.length != arguments.callee.length){
return false;
}
return x+y;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: