函数的caller属性】的更多相关文章

今天我在这里通过一个例子介绍一下函数自身的call属性. 例: function whoCallMe(){ alert("My caller is" + whoCallMe.caller); }; function CallerA(){whoCallMe();}; function CallerB(){whoCallMe():}; alert{whoCallMe.caller};//输出结果为:null; whoCallMe();//输出结果为:My caller is null; C…
funcName.caller : 返回一个对函数的引用, 该函数调用了当前函数 function test() { if (test.caller) { var a = test.caller.toString(): alert(a): } else { alert("this is a top function"): } } function test2() { test(); } test(); // this is a top function test2(); // 显示函数…
函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留言告诉我, 谢谢).因为调用对象是作用域链的一部分,所以在函数体内可以把这个对象属性作为变量来访问. 调用对象的属性包括:用var声明的局部变量,函数形参,还有一种特殊的属性arguments 函数的实际参数:实际参数对象 arguments对象,用来引用实际参数对象.函数的arguments对象并…
1.caller 属性 返回一个对函数的引用,即调用了当前函数的函数体. functionName.caller :functionName 对象是所执行函数的名称. 说明: 对于函数来说,caller 属性只有在函数执行时才有定义. 如果函数是由 JScript 程序的顶层调用的,那么 caller 包含的就是 null .如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本. Js代码 function…
应该用"属性"来称呼caller和callee,而不是方法. caller:返回调用当前函数的函数的引用.a调用b,则返回a(a是boss,因为a把b叫过去干活了): callee: 这个属性中保存b(b是被叫过去差遣的).返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文. 如果函数是由 Javascript 程序的顶层调用的,那么 caller 包含的就是 null .(全局作用域中调用,值为null) --但是callee属性有什么用处呢?? 1…
一.创建函数 函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数. 方式一:利用 Function类 来实例化函数: var people=new Function("name","sex","if (sex=='男') return name+'先生: 您好!'; else return name+'女士: 您好!';"); people('小强','男')…
在函数内部,有两个特殊的对象:arguments和this .arguments是一个类数组对象,用于存放传入函数中的所有参数. callee是arguments对象的属性,caller是所有函数对象的属性. callee callee是一个指针,指向拥有当前arguments对象的函数,即返回正在执行的函数本身的引用. 使用callee时要注意:1 这个属性只有在函数执行时才有效2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较argument…
匿名函数表达式的广泛使用加大了辨别函数的难度,所以ES6 中为所有函数新增了name属性 例如: name属性的特殊情况 (1) (2) 绑定函数的name属性总是由被绑定函数的name属性和字符串前缀"bound"组成 通过Function构造函数创建的函数,其名称将带有前缀"anonymous" 函数name属性的值不一定引用同名变量,它只是协助调试用的额外信息,不能使用name属性的值来获取对于函数的引用…
//if("方法/属性名" in object){存在do...}else{不存在do...}if("data" in event.tagert)//只要使用这一句就能判断event.tagert这个对象里是否具有data方法(函数)或属性了 { do something; } else { do otherthing; } 当对象不存在某个属性的时候,给该对象添加这个属性 var obj:Object =new Object(); obj={"a&quo…
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用.写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring.废话不多说,上俩栗子就能搞明白! 实例一: 不加wraps # -*- coding=utf-8 -*- from functools imp…