Skip to content

2011年01月11日

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 .

原文来自:幸福收藏夹


欢迎转载,转载请注明: 转载自田园牧歌

本文链接地址: JavaScript Quiz: function Name

相关阅读

Read more from 前端开发

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments