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 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
HTML 自动伸缩的表格Table js实现
Apr 01 Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
详解react服务端渲染(同构)的方法
Sep 21 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 Javascript
150行Node.js实现的dns代理工具
Aug 02 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
3
2006/10/09 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
简述vue中的config配置
2018/01/23 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
Python作用域用法实例详解
2016/03/15 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python使用贪婪算法解决问题
2019/10/22 Python
python绘制封闭多边形教程
2020/02/18 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
小学生操行评语
2014/04/22 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
校运会口号
2014/06/18 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
离职报告范文
2014/11/04 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers