Function.name

非標準

概要

関数の名前です。

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" とアラート表示

Document Tags and Contributors

タグ:
Contributors to this page: ethertank, yyss
最終更新者: ethertank,