非標準
概要
関数の名前です。
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" とアラート表示