例如function a(){…}
那么a就是这个func的名称
如果var f = function a(){}
那么这个func依然是a,而f是一个引用。
如果var f = function(){}
这是个匿名函数,函数名为”。
除了IE之外,ff,sa,ch,op的函数都有name属性,比如a.name。
而IE下,我们只能调用函数的toString()属性,通过正则来获取。
我们污染一下原型
Function.prototype.getSelfName = function(){
return typeof this.name === ‘string’ ? this.name : /function\s+([^\{\(\s]+)/.test(this.toString()) ? RegExp['$1'] : ‘[Unknown]‘;
}
取得函数名的不长用到。
arguments.callee还不够吗?
话说,获取对象的名称才是个悲剧。
这个…是ay童鞋提出的需求。另外,其实最初我也是用callee.toString()来实现ie下获取函数名的…