javascript中callee与caller的区别分析


Posted in Javascript onApril 20, 2015

callee

callee是对象的一个属性,该属性是一个指针,指向参数arguments对象的函数
首先我们来写个阶成函数:

function chen(x){
if (x<=1) {
return 1;
} else{
return x*chen(x-1);
};
};

从这个函数中可以看出来,用到了递归函数,要是改变了函数名,里面的函数名也要随着改变,这样很不方便所以我们用callee来试试

function chen(x){
if (x<=1) {return 1;
}else{
return x*arguments.callee(x-1);
};
};

我们来分析一下为什么这样写:根据callee的定义,可以看出来callee是arguments对象的一个属性,指向arguments对象的函数,这个函数就是chen(chen=arguments.callee),这样解释应该可以理解了吧。

caller

caller是函数对象的一个属性,该属性保存着调用当前函数的函数的引用(指向当前函数的直接父函数)

先来个例子吧

function a(){
b();
};
function b(){
alert(b.caller);
};
a(); //结果就是弹出函数a和内容

我们来解释一下吧,首先函数b的属性caller调用当前函数b的函数引用a(就是指向当前函数b的父函数a),所以结果就是弹出 function a(){ b();};

那么了解了caller和callee,那么可以不可以将二者结合在一起来使用呢

function b(){
alert(b.caller);
};

从这个代码可以看出b函数中调用了b函数名,这样当函数名改变时就很不方便,我们需要替换里面的那个b
前面我们知道用什么方法可以指向当前对象,下面我们就来修改一下:

(function a(){
b();
})();

function b(){
alert(arguments.callee.caller);
};

从代码中可以看出我们用arguments.callee代替了b函数,所以解决了一下麻烦。。。。。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
33个优秀的 jQuery 图片展示插件分享
Mar 14 Javascript
jQuery中的jQuery()方法用法分析
Dec 27 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
JS实现图片手风琴效果
Apr 17 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 Javascript
javascript正则表达式中的replace方法详解
Apr 20 #Javascript
javascript正则表达式基础知识入门
Apr 20 #Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 #Javascript
Javascript实现颜色rgb与16进制转换的方法
Apr 18 #Javascript
JS解析XML文件和XML字符串详解
Apr 17 #Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 #Javascript
js获取当前日期时间及其它操作汇总
Apr 17 #Javascript
You might like
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python入门篇之正则表达式
2014/10/20 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
认识深刻的检讨书
2014/02/16 职场文书
幼儿园老师寄语
2014/04/03 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书