callee与caller的区别
Javascript arguments.callee和caller的区别
一、callee
在学习callee之前,需要先学习arguments。
arguments:
- 含义:该对象代表正在执行的函数和调用它的函数的参数。
- 语法:
1 |
|
参数:function :当前正在执行的 Function 对象的名字。
n :要传递给 Function 对象的从0开始的参数值索引。
- 说明:在前面执行上下文的学习过程中,知道生成执行上下文需要两个阶段,分别是进入执行上下文和执行阶段。在其中的进入执行上下文阶段中,需要做三个工作,其中一个工作是创建幷初始化AO,即arguments对象。
Arguments Objects 是函数上下文里的激活对象AO中的内部对象,它包括下列属性:
- callee:指向当前函数的引用
- length: 真正传递的参数的个数
- properties-indexes:就是函数的参数值(按参数列表从左到右排列)
而其中第一个就是今天需要学习的一个属性。先看一个例子:
1 2 3 4 5 |
|
结果:
从结果可以看到,callee是一个指针,指向拥有这个arguments对象的函数。那么可以用这个属性可以做什么?再看一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
结果:
结果并不是我们想要的,造成这个结果的原因就是在后边更改了fac,fac()永远返回0,而trueFac()方法中利用了fac()方法,造成了结果是0。解决这个问题就可以使用arguments.callee属性。
代码改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
结果为:
arguments.callee指向arguments对象的拥有函数引用,当把fac的函数引用赋给trueFac后,arguments对象的拥有函数变成了trueFac,所以结果是正确的。
二、caller
caller与callee不同,caller属性并不属于arguments对象,它是函数对象的属性,Opera的早期版本不支持,这个属性保存着调用当前函数的函数的引用。
例子:
1 2 3 4 5 6 7 |
|
结果:
从结果可知,因为outer()调用了inner(),所以inner.caller就指向outer()。
callee与caller的区别相关推荐
- [js] callee和caller的区别和作用是什么?
[js] callee和caller的区别和作用是什么? arguments.callee 指的是当前函数 Function.caller 指的是调用当前函数的函数 举个例子:function a() ...
- java caller_JavaScript中callee和caller的区别与用法实例分析
本文实例讲述了JavaScript中callee和caller的区别与用法.分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:arguments和this.其中arg ...
- arguments.callee和caller的区别
arguments.callee和caller的区别 1.arguments arguments 是一个对应于传递给函数的参数的类数组对象. 白话就是这是一个函数的传参的集合,不是数组,但是是一个类数 ...
- 函数的callee和caller的区别和用处
1. callee \ arguements.callee 是什么? 就是一个指针 可以指向函数本身 1.每个函数都存在一个arguements的对象 尔callee存在于arguements cal ...
- callee和caller的区别和用法
先来一个通俗易懂的简单描述: 简单一点来说caller是指向调用当前函数的函数,比如b函数调用a函数,那么a.caller则是b的引用:callee是arguments的一个属性,指向其函数自身,比如 ...
- callee、caller、call、apply、bind这些方法的含义和使用
在学校时间比较充裕,所以利用这段时间好好回顾下了js的基础.这回说下这五个函数属性方法,它们分别是:callee.caller.call.apply.bind 这5个方法在刚学js的时候一直理解不透, ...
- js函数的内部属性---arguments,callee,caller
在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: ...
- ES5-13 对象属性遍历、this、callee、caller
链式调用 在每个函数内部return this 访问对象属性 点语法 []中括号内是字符串或是变量 数组是特殊的对象 对象属性遍历 for in(遍历对象或数组) - 不必再用Object.keys那 ...
- JavaScript中callee和caller的用法解读
1.callee: callee是对象的一个属性,该属性是一个指针,指向参数arguments对象的函数. 作用:指向当前对象. 例1: <script type="text/java ...
最新文章
- FIA2020会议准备相关工作
- bigdecimal正确用法_BigDecimal用法详解
- 学python要多少钱-学习Python这门课程大概需要多久?费用是多少?
- 我的2012年度总结
- python3 long类型_Python3 基本数据类型
- 表的插入、更新、删除、合并操作_10_仅复制表结构
- 音视频技术开发周刊 69期
- LeetCode动态规划 环形子数组的最大和
- JavaScript输入输出
- quartz中定时表达式详解
- GET请求与POST请求的区别
- 自定义xadmin后台首页
- [转]对比Cassandra、 Mongodb、CouchDB、Redis、Riak、 Membase、Neo4j、HBase
- 手机上有哪些不错的c语言编程软件?
- Kibana:Drilldown 中的 URL 模板
- COMSOL电化学专题培训通知
- linux切换桌面的快捷键,SUSE Linux Gnome桌面快捷键整理
- 【JS教程】移动端 Touch(触摸)事件
- 怎么用计算机弹出光年之外,明日之后光年之外简谱代码-明日之后光年之外怎么弹-明日之后光年之外钢琴曲谱分享_牛游戏网...
- 如何使用word模板生成word文档(文本,图片)