非標準
概要
関数の名前です。
Function オブジェクトのプロパティ |
|
|---|---|
| 実装されたバージョン | JavaScript ? |
| ECMAScript エディション | None |
説明
name プロパティは関数の名前、または無名関数に対して空文字を返します:
function doSomething() { }
alert(doSomething.name); // alerts "doSomething"
構文 new Function(...) または単に Function(...) で関数を作成するとその name プロパティは、Firefox および Safari では "anonymous" に、Chrome および Opera では空文字が設定されます。このプロパティは、Internet Explorer でサポートされていません。
以下の例では無名関数を作成していますので、name は空文字を返します:
var f = function() { };
var object = {
someMethod: function() {}
};
alert(f.name == ""); // true
alert(object.someMethod.name == ""); // こちらも true
関数式 で、name を持つ関数を定義することができます:
var object = {
someMethod: function object_someMethod() {}
};
alert(object.someMethod.name); // "object_someMethod" とアラート表示
try { object_someMethod } catch(e) { alert(e); }
// ReferenceError: object_someMethod is not defined
このプロパティは読み取り専用であり、関数の name を変更することはできません:
var object = {
// anonymous
someMethod: function() { }
};
object.someMethod.name = "someMethod";
alert( object.someMethod.name ); // 空文字、someMethod は名前がありません
例
オブジェクトの "クラス" を確認するために、obj.constructor.name を用いることができます:
function a() { }
var b = new a();
alert(b.constructor.name); // "a" とアラート表示