Function.name

  • リビジョンの URL スラッグ: JavaScript/Reference/Global_Objects/Function/name
  • リビジョンのタイトル: Function.name
  • リビジョンの ID: 369747
  • 作成日:
  • 作成者: ethertank
  • 現行リビジョン いいえ
  • コメント Moved From dummySlug/Reference/Global_Objects/Function/name to JavaScript/Reference/Global_Objects/Function/name

このリビジョンの内容

{{Non-standard_header}}

概要

関数の名前です。

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

このリビジョンのソースコード

<div>
  {{Non-standard_header}}</div>
<h2 id="Summary" name="Summary">概要</h2>
<p>関数の名前です。</p>
<table class="standard-table">
  <thead>
    <tr>
      <th class="header" colspan="2"><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="JavaScript/Reference/Global_Objects/Function"><code>Function</code></a> オブジェクトのプロパティ</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>実装されたバージョン</td>
      <td>JavaScript ?</td>
    </tr>
    <tr>
      <td>ECMAScript エディション</td>
      <td>None</td>
    </tr>
  </tbody>
</table>
<h2 id="Description" name="Description">説明</h2>
<p><code>name</code> プロパティは関数の名前、または無名関数に対して空文字を返します:</p>
<pre class="brush:js">
function doSomething() { }

alert(doSomething.name); // alerts "doSomething"</pre>
<p>構文 <code>new <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="Function">Function</a>(...)</code> または単に <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="Function"><code>Function</code></a><code>(...)</code> で関数を作成するとその <code>name</code> プロパティは、Firefox および Safari では "anonymous" に、Chrome および Opera では空文字が設定されます。このプロパティは、Internet Explorer でサポートされていません。</p>
<p>以下の例では無名関数を作成していますので、<code>name</code> は空文字を返します:</p>
<pre class="brush:js">
var f = function() { };
var object = {
  someMethod: function() {}
};

alert(f.name == ""); // true
alert(object.someMethod.name == ""); // こちらも true</pre>
<p><a href="/ja/docs/JavaScript/Reference/Functions#Function_constructor_vs._function_declaration_vs._function_expression" title="JavaScript/Reference/Functions#Function_constructor_vs._function_declaration_vs._function_expression">関数式</a> で、<code>name</code> を持つ関数を定義することができます:</p>
<pre class="brush:js">
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</pre>
<p>このプロパティは読み取り専用であり、関数の <code>name</code> を変更することはできません:</p>
<pre class="brush:js">
var object = {
  // anonymous
  someMethod: function() { }
};

object.someMethod.name = "someMethod";
alert( object.someMethod.name ); // 空文字、someMethod は名前がありません</pre>

<h2 id="Examples" name="Examples">例</h2>
<p>オブジェクトの "クラス" を確認するために、<code>obj.constructor.name</code> を用いることができます:</p>
<pre class="brush:js">
function a() { }

var b = new a();

alert(b.constructor.name); // "a" とアラート表示</pre>
Revert to this revision