函数function对象的caller属性
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
function A(){return A.caller;} A(); //null function B(){return A();} B(); //B()
函数function对象的call()方法和apply()方法。
1 /* 2 apply()的工作方式与call()基本相同, 3 唯一不同是参数的传递形式,apply()通过数组传递。 4 */ 5 var some_obj={ 6 name:‘Ninja‘, 7 say:function(who){ 8 return ‘Hi, ‘+who+‘, I am a ‘+this.name; 9 } 10 } 11 some_obj.say(‘Aiil‘); 12 /* 13 Hi, Aiil, I am a Ninja 14 */ 15 my_obj={name:‘LiHa‘}; 16 some_obj.say.call(my_obj,‘Aiil‘); 17 /* 18 Hi, Aiil, I am a LiHa 19 */ 20 some_obj.say.apply(my_obj,[‘Aiil‘]); 21 /* 22 Hi, Aiil, I am a LiHa 23 */
arguments类似数组,其中包含索引元素和length属性;另外还包含callee属性。
arguments.callee 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
function f(){ return arguments.callee; } f(); /* function f(){ return arguments.callee; } */ //通过arguments.callee属性实现匿名函数的递归调用 ( function (count){ if(count<5){ alert(count); arguments.callee(++count); } } )(1) //传递给内部的值是1,alert分别弹出1、2、3、4
时间: 2024-10-11 17:01:33