Javascript - 显示调用方函数名称的通用函数
Javascript - generic function to display caller function name
我正在尝试创建一个通用函数(例如'displayFuncName(('(,我可以在不同的函数定义中调用它(例如'foo(('(,所以它将控制台.log函数名称(在这个例子中是'foo'(。像这样:
var displayFuncName = function(){
console.log("caller function name: " + some parameter);
}
var foo = function(){
displayFuncName(); // should console log "caller function name: foo
}
我知道过去以不同的方式询问过它,但似乎有一些不推荐使用的选项,其中一些只显示"displayFuncName"函数名称,这当然不是我想要的。
由于arguments.callee
在严格模式下抛出错误并且不再支持arguments.caller
,因此也许这样的东西对您来说会是一个更好的选择:
Function.prototype.logName = function() {
var fn = this;
return function() {
console.log(fn.name);
return fn.apply(this, arguments);
}
}
var f = function named() {}.logName();
f(); // logs `named`
这样,您可以在调用时为要记录其名称的每个函数调用 logName
。
console.log("caller is " + arguments.callee.caller.name);
拥有函数名称(如果要使用 theCallerFunction.name,则拥有函数本身不是更容易吗?
这将以更简单的方式为您提供完全相同的结果。.name 被贬值的可能性也小得多。
var displayFuncName = function(callerFunc){
console.log("caller function name: " + callerFunc.name);
}
var function = foo(){
displayFuncName(foo);
}
我相信"arguments.callee.caller.name"是贬值的。
与其从每个方法调用泛型函数,不如使用类似
arguments.callee.caller.name
这将为您提供调用函数的函数的名称。如果您在泛型方法中使用它,那么这将为您提供您想知道调用方的函数的名称。但是,如果您有一个共同的假设,即您想知道调用者的调用方,则可以使用这样的东西。
firstFunction();
function firstFunction(){
secondFunction();
}
function secondFunction(){
whoCalled();
}
function whoCalled(){
alert("caller is " + arguments.callee.caller.arguments.callee.caller.name);
}
var displayFuncName = function(){
console.log("caller function name: " + arguments.callee.caller.name );
}
function foo(){
displayFuncName(); // should console log "caller function name: foo
}
foo();
否则,如果您想要整个功能,则可以使用
var displayFuncName = function(){
console.log("caller function name: " + arguments.callee.caller.toString());
}
var foo = function(){
displayFuncName(); // should console log "caller function name: foo
}
foo();
无论哪种都适合您的要求。
一种解决方案是这样的:
var displayFuncName = function(o) {
console.log(o.name);
}
var foo = function(){
displayFuncName(foo);
console.log(foo.name); // also possible
}
foo();
但是您可以找到更多的解决方案。
看这里。
相关文章:
- 更新URL时使用Javascript函数显示日期
- 使用 js 函数显示 HTML 表单的结果
- Javascript日期函数显示错误的日期
- I'm试图使用onclick函数显示函数的结果.(javascript)
- 如何使用 JavaScript 函数显示表单 asp.net
- 通过脚本在中隐藏元素,然后使用函数显示
- 向对象原型添加函数会导致函数显示在所有“OBJ 中的 X”循环中
- 图像 onclick() 函数显示带有表单详细信息的 dailog 窗口
- Javascript 日期未显示为相等,尽管 getTime() 函数显示日期相等
- Javascript函数显示用户输入数组
- PHP中用于显示模态的Echo Javascript函数显示不正确
- 使用构造函数显示模块模式
- JQuery函数显示依赖于隐藏HTML输入元素值的元素
- 为什么这个javascript使用getTime函数显示负数
- fancybox iframe内容未通过jquery函数显示
- HTML函数显示为纯文本
- 使用JavaScript函数显示日历
- Titanium,Js函数显示XML文本字段文本
- 使用JavaScript函数显示flash
- replaceWith函数显示了奇怪的结果