js中的arguments对象代表正在执行的函数和调用它的函数的参数。arguments对象有两个属性,callee和caller。collee表示当前正在执行的方法,caller表示调用该方法的对象,如果函数是顶层调用的,则caller值为null。这两个属性可以用在以下情形:

1、方法的链式调用

(function(o){
alert(o);
return arguments.callee;
})("第一次调用")("第二次调用")("第三次调用");

2、递归调用

var result = (function(n) {
if (n <=1)
return 1;
else
return n + arguments.callee(n - 1);
})(100);
alert(result);

3、获取方法信息

var func = function(){
//打印方法体
alert(arguments.callee);
//打印方法名 func
alert(arguments.callee.name);
//打印调用方法体
alert(arguments.callee.caller);
//打印调用方法名 callfunc
alert(arguments.callee.caller.name);
}; function callfunc(){
func();
} callfunc();

点击查看运行效果

arguments对象的callee属性和caller属性的更多相关文章

  1. arguments对象的callee属性详解

    在函数内部,有两个特殊的对象:arguments和this. argument对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数.请看下面这个非常经典的阶乘函 ...

  2. arguments对象,caller 和 callee

    arguments对象是比较特别的一个对象,arguments非常类似Array,但实际上又不是一个Array实例. 它指的是函数对象里的参数,且只能在函数内部使用. 使用 检测函数的参数个数,引用属 ...

  3. JavaScript 对象属性作实参以及实参对象的callee属性

    参考自<<JavaScript权威指南 第6版>> /* * 将对象属性用作实参, 从而不必记住参数的顺序. */ function arraycopy(from,from_s ...

  4. 你不知道的JavaScript--Item11 arguments对象

    1.什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以ag ...

  5. arguments对象详解

    在javascript中,函数是没有重载这一项的,所谓的重载,一个函数可以有多个,就是参数的个数和形式不同所以引用的功能不同,而js不存在函数重载,不管传不传参数,函数里面是否引用,关系都不大,一个函 ...

  6. 关于arguments对象以及函数的柯里化;

    1.arguments对象 Arguments是个类似数组但不是数组的对象,说他类似数组是因为其具备数组相同的访问性质及方式,能够由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性 ...

  7. JavaScript arguments对象

    1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证 ...

  8. arguments对象的实例使用

    新年第一记,从这里开始,先来个简单的!去年的知识梳理留下了很多尾巴,原因有很多(知识储量不足,懒了,项目多...) lg:都是借口~   好吧,我承认,这都是借口,今年一定把尾巴清干净! 下面要写的是 ...

  9. 浅谈JS的arguments对象

    在JavaScript中,arguments属于当前对象的一个内置属性,arguments非常类似于Array对象,但是又不是实例的Array.比如: Array.prototype.testArg ...

随机推荐

  1. 1、eclipse

    1.安装java 32位 jdk-7u79-windows-i586-20151024.rar http://www.oracle.com/technetwork/java/javase/downlo ...

  2. c++官方文档-copy constructor

    #include <iostream> using namespace std; class Example5 { string* ptr; public: Example5(const ...

  3. 3.linux基本操作命令

    2018年2月20日星期二 Linux常见操作命令 Linux 操作命令? ●查看进程是否启用? ps -aux|less ●查看磁盘剩余空间? cat /proc/meminfo 校验内存使用 ●s ...

  4. 列表、字典、append

    list[] 定义列表可以是空的也可以直接定义列表中的元素,例如:list = ["hello", "world", "dlrb"] dic ...

  5. AWS 相关阅读

    http://www.infoq.com/cn/articles/aws-s3-dive-in http://baike.baidu.com/link?url=Jo9OQmjxXZLxyhc6JvaD ...

  6. centos7扩展根分区

    参考网站:http://www.360doc.com/content/18/0128/11/52410512_725728162.shtml VirtualBox中安装了CentOS 7,给同事用来做 ...

  7. Spring的applicationContext.xml的疑问解析

    Spring中注解注入 context:component-scan 的使用说明 通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个标签,配置完这个标签后,spring就会去自动 ...

  8. Mysql 索引 n-gram分词引擎使用

    概述: 类似于书籍的目录,找到一本书的特定内容,需要首先找到内容对应页码,定位对应页码 存储引擎使用类似方法进行数据查找,先找到索引中对应值,然后根据匹配的索引找到对应行 实现原理: 索引的实现通常使 ...

  9. HashMap怎样解决碰撞问题

    碰撞:HashMap运用put方法存储多个元素时,计算得出相同的hashCode,在put时出现冲突. 处理:利用“拉链法”处理HashCode的碰撞问题:当我们将键值对传递给put方法时,他调用键对 ...

  10. 捷微jeewx , 免费开源(java)微信公众账号管家系统发布

    JeeWx, 微信管家平台,简称"捷微". 捷微是一款免费开源的JAVA微信公众账号开发平台.  平台介绍: 一.捷微Jeewx简介 Jeewx是一个开源.高效.敏捷的微信开发平台 ...