小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Functionオブジェクトのnameプロパティについて

Firefoxで関数を定義し、その関数のnameプロパティを参照すると関数名が取得できる。ただし、hasOwnPropertyでnameプロパティを持っているかを調べるとfalseと返ってくる。

function a() {}
alert(a.name);
>>a
alert(a.hasOwnProperty("name"));
>>false

その出所は、arguments.callee.nameらしい。

「arguments.callee.name」というnameプロパティから関数名を取得することが出来ます。
http://hisasann.com/housetect/2008/02/javascriptcallee.html

function a() {
  alert(arguments.callee.name);
}
a();
>>a

ちなみにこのコード、Opera9.61やSafari1.3.2ではundefinedになる。さらに、Safari1.XはhasOwnPropertyメソッドを実装していないのね。
http://futuremix.org/2006/03/safari-hasownproperty