MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Diese Übersetzung ist in Arbeit.

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

Einleitung

Die Eigenschaft function.name liefert den Namen einer Funktion.

Property attributes of Function.name
Writable no
Enumerable no
Configurable no

Beschreibung

Die Eigenschaft name liefert den Namen einer Funktion oder - im Falle einer anonymen Funktion - einen leeren String:

function doSomething() {}

console.log(doSomething.name); // logs "doSomething"

Bei Funktionen die mittels new Function(...) oder auch nur Function(...) erzeugt werden, wird die Eigenschaft name auf einen leeren String gesetzt. In den folgenden Beispielen werden anonyme Funktionen erzeugt, so dass name stets einen leeren String zurückgibt:

var f = function() {};
var object = {
  someMethod: function() {}
};

console.log(f.name == ''); // true
console.log(object.someMethod.name == ''); // ebenfalls true

Funktionen mit einem Namen lassen sich mittels function expression definieren:

var object = {
  someMethod: function object_someMethod() {}
};
console.log(object.someMethod.name); // logs "object_someMethod"

try { object_someMethod } catch(e) { console.log(e); }
// ReferenceError: object_someMethod is not defined

Funktionsnamen lassen sich nicht nachträglich ändern oder ergänzen, denn diese Eigenschaft ist schreibgeschützt:

var object = {
  // anonyme Funktionsdefinition
  someMethod: function() {}
};

object.someMethod.name = 'someMethod';
console.log(object.someMethod.name); // leerer String, someMethod ist anonym

Beispiele

Über obj.constructor.name lässt sich die "Klasse" eines Objekts überprüfen:

function a() {}

var b = new a();

console.log(b.constructor.name); // logs "a"

Allerdings sollte der instanceof Operator zur Typprüfung bevorzugt werden.

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'name' in dieser Spezifikation.
Standard Initiale Definition.

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 33 (Ja) Nicht unterstützt (Ja) (Ja)
Configurable: true 43 38 (38) ? ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Ja) (Ja) (Ja) Nicht unterstützt (Ja) (Ja)
Configurable: true ? ? 38.0 (38) ? ? ?

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: Eiknheimer, MoritzKn, DavidVollmers
 Zuletzt aktualisiert von: Eiknheimer,