Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla

Revision 292734 of Function.name

  • リビジョンの URL スラグ: JavaScript/Reference/Global_Objects/Function/name
  • リビジョンのタイトル: name
  • リビジョンの ID: 292734
  • 作成日:
  • 作成者: yyss
  • 現行リビジョン いいえ
  • コメント

このリビジョンの内容

{{ Non-standard_header() }}

概要

関数の名前です。

Property of Function
Implemented in JavaScript ?
ECMAScript Edition 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" とアラート表示

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

<p>{{ Non-standard_header() }}</p>
<h2 id="Summary">概要</h2>
<p>関数の名前です。</p>
<table class="standard-table">
  <thead>
    <tr>
      <th class="header" colspan="2">Property of <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="ja/docs/JavaScript/Reference/Global_Objects/Function"><code>Function</code></a></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Implemented in</td>
      <td>JavaScript ?</td>
    </tr>
    <tr>
      <td>ECMAScript Edition</td>
      <td>None</td>
    </tr>
  </tbody>
</table>
<h2 id="Description">説明</h2>
<p>name プロパティは関数の名前、または無名関数に対して空文字を返します:</p>
<pre class="eval">
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> または単に <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function" title="Function">Function</a></code><code>(...)</code> で関数を作成するとその name プロパティは、Firefox および Safari では "anonymous" に、Chrome および Opera では空文字が設定されます。このプロパティは、Internet Explorer でサポートされていません。</p>
<p>以下の例では無名関数を作成していますので、<code>name</code> は空文字を返します:</p>
<pre class="eval">
var f = function() { };
var object = {
  someMethod: function() {}
};

alert(f.name == ""); // true
alert(object.someMethod.name == ""); // こちらも true

</pre>
<p><a href="/ja/docs/Core_JavaScript_1.5_Reference/Functions#Function_constructor_vs._function_declaration_vs._function_expression" title="ja/docs/Core_JavaScript_1.5_Reference/Functions#Function_constructor_vs._function_declaration_vs._function_expression">関数式</a> で、name を持つ関数を定義することができます:</p>
<pre class="eval">
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="eval">
var object = {
  // anonymous
  someMethod: function(){}
};
object.someMethod.name = "someMethod";
alert(object.someMethod.name); // 空文字、someMethod は名前がありません
</pre>
<h2 id="Examples">例</h2>
<p>オブジェクトの "クラス" を確認するために、<code>obj.constructor.name</code> を用いることができます:</p>
<pre class="eval">
function a()
{
}

var b = new a();
alert(b.constructor.name); // "a" とアラート表示
</pre>
このリビジョンへ戻す