JS:callee属性

函数内部属性:在函数内部,有两个特殊的对象:arguments和this。

  arguments有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函数。

function factorial(num){

if (num<=1) {
  return 1;

}else{
  //return(num * factorial(num - 1)); //有耦合
  return num * arguments.callee(num - 1); // 优化后的 //callee属性,该属性是一个指针,指向拥有这个arguments对象的函数。例

  };
};

var trueFactoraial = factorial;
factorial = function(){
  return 0;
};
alert(trueFactoraial(5)); //120
alert(factorial(5)); //0

ps:callee在严格模式下是不能识别的。

时间: 2024-11-09 00:49:30

JS:callee属性的相关文章

js 方法中内部属性arguments的callee属性

var factorial=function(num){ if(num<=1) return 1; else // return num*factorial(num-1);//递归时,在方法内部通过该方法的方法名来调用自己是非常危险的,因为js可以直接修改方法变脸的值 return num*arguments.callee(num-1);//递归时,应该使用方法内部属性arguments的callee属性,它保存了当前方法的地址(指针) } var another=factorial; fact

js中的caller和callee属性

caller返回一个对函数的引用,该函数调用了当前函数. functionName.caller functionName 对象是所执行函数的名称. 说明对于函数来说,caller 属性只有在函数执行时才有定义. 如果函数是由 Javascript 程序的顶层调用的,那么 caller 包含的就是 null .下面的例子说明了 caller 属性的用法: js 代码: function callerDemo() { if (arguments.caller) { var a = callerDe

js中的caller属性和callee属性

应该用"属性"来称呼caller和callee,而不是方法. caller:返回调用当前函数的函数的引用.a调用b,则返回a(a是boss,因为a把b叫过去干活了): callee: 这个属性中保存b(b是被叫过去差遣的).返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文. 如果函数是由 Javascript 程序的顶层调用的,那么 caller 包含的就是 null .(全局作用域中调用,值为null) --但是callee属性有什么用处呢?? 1

caller 属性和callee属性

1.caller 属性 返回一个对函数的引用,即调用了当前函数的函数体. functionName.caller :functionName 对象是所执行函数的名称. 说明: 对于函数来说,caller 属性只有在函数执行时才有定义. 如果函数是由 JScript 程序的顶层调用的,那么 caller 包含的就是 null .如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本. Js代码 function

js callee,caller学习

原文地址:js callee,caller学习 /* * caller 返回一个对函数的引用,该函数调用了当前函数. * 如果函数是由顶层调用的,那么 caller包含的就是 null . * 如果在字符串上下文中使用 caller属性,那么结果和 functionName.toString * 一样,也就是说,显示的是函数的反编译文本. * 在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象.如果该函数当前未被调用,或并非被其他函数调用,则caller为

JavaScript的callee 属性

返回正被执行的 Function 对象,即指定的 Function 对象的正文. [function.]arguments.callee 备注 可选 function 参数是当前执行的 Function 对象的名称. callee 属性是 arguments 对象的一个成员,该属性仅当相关函数正在执行时才可用. callee 属性的初始值是正被执行的 Function 对象. 这将允许匿名函数成为递归的. 示例 JavaScript function factorial(n){ if (n <=

JS操作属性、样式

JS操作属性:aaa.getAttribute("属性名"); - 取出aaa这个dom对象的属性名中的属性值 aaa.removeAttribute("属性名"); -移除该属性 aaa.setAttribute("属性名","值"); --添加/修改此属性 window.setTimeout("b()", 3000); --等待3秒,执行b这个方法,执行一遍window.setInterval('aaa

JS操作属性和样式

JS操作属性:aaa.getAttribute("属性名"); - 取出aaa这个DOM对象的属性名中的属性值aaa.removeAttribute("属性名"); -移除该属性aaa.setAttribute("属性名","值"); --添加/修改此属性 window.setTimeout("b()", 3000); --等待3秒,执行b这个方法,只执行一遍.window.setInterval('aaa

caller和callee属性

ECMAScript5规范了函数对象的属性:caller.除了Opera的早期版本不支持,其他浏览器都支持这个ECMAScript3并没有定义的属性. [IE,Firefox,Chrome,Safari的所有版本以及Opera9.6都支持caller属性] 这个属性保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null. functionName.caller 返回调用者. eg: 1 function outer(){ 2 inner(); 3 } 4 functi