js arguments,jcallee caller用法总结


Posted in Javascript onNovember 30, 2013

关键字:arguments,callee,caller
arguments:表示传入函数的参数
callee:表示函数和函数主体的语句
caller:表示调用该函数的函数

arguments

该对象代表正在执行的函数和调用它的函数的参数。

caller

返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。

说明
对于函数来说,caller属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和functionName.toString一样,也就是说,显示的是函数的反编译文本。

callee

返回正被执行的 Function 对象,也就是所指定的Function 对象的正文。

[function.]arguments.callee

可选项 function 参数是当前正在执行的 Function 对象的名称。

说明

callee 属性的初始值就是正被执行的 Function 对象。

callee 属性是 arguments对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。

<script type='text/javascript'>
function test(x,y,z) 
{ 
alert("实参长度:"+arguments.length);
alert("形参长度:"+arguments.callee.length);
alert("形参长度:"+test.length);
alert(arguments[ 0 ])         
alert(test[ 0 ])           // undefined 没有这种用法
}
//test(1,2,3); 
test(1,2,3,4);
/*
*  arguments不是数组(Array类)
*/
Array.prototype.selfvalue  =   1 ;
function  testAguments() {
    alert( " arguments.selfvalue= " + arguments.selfvalue);
}
alert("Array.sefvalue="+new Array().selfvalue);
testAguments();
/**/ /*
 * 演示函数的caller属性.
 * 说明:(当前函数).caller:返回一个对函数的引用,该函数调用了当前函数
  */
function  callerDemo()  {
     if  (callerDemo.caller)  {
         var  a =  callerDemo.caller.arguments[ 0 ];
        alert(a);
    }   else   {
        alert( " this is a top function " );
    }
}
function  handleCaller()  {
    callerDemo();
}
 callerDemo();
 handleCaller("参数1","参数2");

/**/ /*
 * 演示函数的callee属性.
 * 说明:arguments.callee:初始值就是正被执行的 Function 对象,用于匿名函数
  */
function  calleeDemo()  {
    alert(arguments.callee);
}
 calleeDemo();
 (function(arg0,arg1){alert("形数数目为:"+arguments.callee.length)})();

/**/ /*
 * 演示apply,call函数的用法
 * 说明:作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别:
 *       apply(thisArg,argArray);
 *     call(thisArg[,arg1,arg2…] ]);
 *     即所有函数内部的this指针都会被赋值为thisArg
  */
  function  ObjectA() {
    alert( " 执行ObjectA() " );
    alert(arguments[ 0 ]);
     this .hit = function (msg) {alert(msg)}
     this .info = " 我来自ObjectA "
 }
  function  ObjectB() {
    alert( " 执行ObjectB() " );
     // 调用ObjectA()方法,同时ObjectA构造函数中的所有this就会被ObjectB中的this替代
    ObjectA.apply( this ,arguments); // ObjectA.call(this);
    alert( this .info);
 }
  ObjectB('参数0');

  var  value = " global 变量 " ;
  function  Obj() {
     this .value = " 对象! " ;
 }
  function  Fun1() {
    alert( this .value);
 }
   Fun1();
   Fun1.apply(window); 
   Fun1.apply(new Obj());
</script>
Javascript 相关文章推荐
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 Javascript
es6数值的扩展方法
Mar 11 Javascript
js中arguments的用法(实例讲解)
Nov 30 #Javascript
JavaScript中的undefined学习总结
Nov 30 #Javascript
浅析JavaScript中的typeof运算符
Nov 30 #Javascript
浅析JavaScript中的delete运算符
Nov 30 #Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 #Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 #Javascript
jQuery之过滤元素操作小结
Nov 30 #Javascript
You might like
PHP之短标签开启设置
2013/06/17 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
jQuery 选择器详解
2015/01/19 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
Node.js实现文件上传
2016/07/05 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
python daemon守护进程实现
2016/08/27 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
pycharm配置git(图文教程)
2019/08/16 Python
Django实现文件上传和下载功能
2019/10/06 Python
python关闭占用端口方式
2019/12/17 Python
Python用input输入列表的实例代码
2020/02/07 Python
python如何删除列为空的行
2020/07/17 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
Python 远程开关机的方法
2020/11/18 Python
简短证婚人证婚词
2014/01/09 职场文书
高中军训感言200字
2014/02/23 职场文书
学习决心书
2014/03/11 职场文书
购房协议书范本
2014/04/11 职场文书
服务标语口号
2014/07/01 职场文书
车辆年审委托书范本
2014/09/18 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
教师师德工作总结2015
2015/07/22 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript