JavaScript Quiz: function Name
很困,差点都睡着了。看到工友发的一个推,玩了一下。求解。

function xx(){
//how to output function name:xx here?
}
======
好吧。无情的分割线,没人回答。我的解法是利用 arguments.callee.toString()
function fn(){
var fncode = arguments.callee.toString(), rnotation = fncode.indexOf('(');
alert(fncode.slice(9, rnotation));
}
但如果用(function())() 这样来执行。其实 IE 下获取到的和其他浏览器不同。结果就要 hack 了。如果用 fn() 来执行,那事实上我们知道 fn 这个名啦。
其实,这只是一个游戏。大伯说这种问题是,“诡异的需求源于错误的思路,或者说对系统肤浅的认识”,-,- 好吧,世界这么欢乐。锻炼身体的时候,跑步身体会累,为什么我们去做?因为在累的同时我们也等到了某些会让我们身体更健康的东西。而这个函数完全没用,为什么我们还要玩?虽然没用,但至少会让不熟悉 callee 和 toString 的同学有一个新的机会去认识。
玩吧。世界多美好。有失必有得。
======
UPDATE: 2010.1.5 18:13
工友 @kangpangpang 的解
var c = function (){
var b = arguments.callee;
for(var key in window){
if(window[key] == b){
alert(key);
}
}
//console.log(arguments.callee.toString());
};
c()
©2011 幸福收藏夹. 版权所有,转载务必注明. 幸福收藏夹域名已经更新为:sofish.de .![]()
原文来自:幸福收藏夹


