propertyIsEnumerable

  • Adressname der Version: JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
  • Titel der Version: propertyIsEnumerable
  • ID der Version: 362077
  • Erstellt:
  • Autor: L3P3
  • Aktuelle Version? Ja
  • Kommentar

Inhalt der Version

Zusammenfassung

Gibt boolesch zurück, ob die bestimmte Eigenschaft aufzählbar ist.

Methode von Object
Implementiert in JavaScript ?
ECMAScript Edition ECMAScript 3rd Edition

Syntax

obj.propertyIsEnumerable(eigenschaft)

Parameter

eigenschaft
Der Name der Eigenschaft, die getestet werden soll.

Beschreibung

Jedes Objekt hat eine propertyIsEnumerable-Methode. Diese Methode kann herausfinden, ob die bestimmte Eigenschaft in einer for...in-Schleife aufgelistet werden kann, solange sie eine direkte Eigenschaft ist (Ohne sie von einer Klasse vererbt zu haben). Wenn das Objekt die Eigenschaft nicht hat, wird false zurückgegeben.

Anmerkung: Seit JavaScript 1.8.1 (in Firefox 3.6) wird bei propertyIsEnumerable("prototype") false statt true zurückgegeben; das sorgt für Kompatibilität mit ECMAScript 5.

Beispiele

Beispiel: Eine einfache Verwendung von propertyIsEnumerable

Das folgende Beispiel zeigt die Verwendung von propertyIsEnumerable bei Objekten und Arrays:

var o = {};
var a = [];
o.prop = 'ist aufzählbar';
a[0] = 'ist aufzählbar';

o.propertyIsEnumerable('prop');   // gibt true zurück
a.propertyIsEnumerable(0);        // gibt true zurück

Beispiel: Vergleich von selbsterstellten und vorgegebenen Objekten

Das folgende Beispiel demonstriert die Aufzählbarkeit von selbsterstellten und von vordefinierten Objekten:

var a = ['ist aufzählbar'];

a.propertyIsEnumerable(0);          // gibt true zurück
a.propertyIsEnumerable('length');   // gibt false zurück

Math.propertyIsEnumerable('random');   // gibt false zurück
this.propertyIsEnumerable('Math');     // gibt false zurück

Beispiel: Direkte und vererbte Eigenschaften

var a = [];
a.propertyIsEnumerable('constructor');       // gibt false zurück

function ersterConstructor() {
  this.eigenschaft = 'ist nicht aufzählbar';
}

ersterConstructor.prototype.ersteMethode = function () {};

function zweiterConstructor() {
  this.methode = function methode() { return 'ist aufzählbar'; };
}

zweiterConstructor.prototype = new ersterConstructor;
zweiterConstructor.prototype.constructor = zweiterConstructor;

var o = new zweiterConstructor();
o.eineEigenschaft = 'ist aufzählbar';

o.propertyIsEnumerable('eineEigenschaft');   // gibt true zurück
o.propertyIsEnumerable('methode');           // gibt true zurück
o.propertyIsEnumerable('eigenschaft');       // gibt false zurück

o.eigenschaft = 'ist aufzählbar';

o.propertyIsEnumerable('eigenschaft');       // gibt true zurück

// Diese Eigenschaften werden nicht beachtet, sondern
// geben bei propertyIsEnumerable immer false zurück:
// (Obwohl die beiden letzteren in for...in-Schleifen beachtet werden)

o.propertyIsEnumerable('prototype');         // gibt false zurück (wie bei JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor');       // gibt false zurück
o.propertyIsEnumerable('firstMethod');       // gibt false zurück

Siehe auch...

Quelltext der Version

<h2 id="Summary" name="Summary">Zusammenfassung</h2>
<p>Gibt boolesch zurück, ob die bestimmte Eigenschaft aufzählbar ist.</p>
<table class="standard-table">
  <thead>
    <tr>
      <th class="header" colspan="2">Methode von&nbsp;<a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="JavaScript/Reference/Global_Objects/Object"><code>Object</code></a></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Implementiert in</td>
      <td>JavaScript ?</td>
    </tr>
    <tr>
      <td>ECMAScript Edition</td>
      <td>ECMAScript 3rd Edition</td>
    </tr>
  </tbody>
</table>
<h2 id="Syntax" name="Syntax">Syntax</h2>
<pre class="syntaxbox">
<code><em>obj</em>.propertyIsEnumerable(<em>eigenschaft</em>)</code></pre>
<h3 id="Parameters" name="Parameters">Parameter</h3>
<dl>
  <dt>
    <code>eigenschaft</code></dt>
  <dd>
    Der Name der Eigenschaft, die getestet werden soll.</dd>
</dl>
<h2 id="Description" name="Description">Beschreibung</h2>
<p>Jedes Objekt hat eine&nbsp;<code>propertyIsEnumerable</code>-Methode. Diese Methode kann herausfinden, ob die bestimmte Eigenschaft in einer&nbsp;<a href="/en-US/docs/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in"><code>for...in</code></a>-Schleife aufgelistet werden kann, solange sie eine direkte Eigenschaft ist (Ohne sie von einer Klasse vererbt zu haben). Wenn das Objekt die Eigenschaft nicht hat, wird <code>false</code> zurückgegeben.</p>
<div class="note">
  <strong>Anmerkung:</strong> Seit JavaScript 1.8.1 (in Firefox 3.6) wird bei&nbsp;<code>propertyIsEnumerable("prototype")</code>&nbsp;<code>false</code> statt <code>true</code> zurückgegeben; das sorgt für Kompatibilität mit ECMAScript 5.</div>
<h2 id="Examples" name="Examples">Beispiele</h2>
<h3 id="Example:_A_basic_use_of_propertyIsEnumerable" name="Example:_A_basic_use_of_propertyIsEnumerable">Beispiel: Eine einfache Verwendung von&nbsp;<code>propertyIsEnumerable</code></h3>
<p>Das folgende Beispiel zeigt die Verwendung von&nbsp;<code>propertyIsEnumerable</code>&nbsp;bei Objekten und Arrays:</p>
<pre class="brush: js">
var o = {};
var a = [];
o.prop = 'ist aufzählbar';
a[0] = 'ist aufzählbar';

o.propertyIsEnumerable('prop');   // gibt true zurück
a.propertyIsEnumerable(0);        // gibt true zurück
</pre>
<h3 id="Example:_User-defined_versus_built-in_objects" name="Example:_User-defined_versus_built-in_objects">Beispiel: Vergleich von selbsterstellten und vorgegebenen Objekten</h3>
<p>Das folgende Beispiel demonstriert die Aufzählbarkeit von selbsterstellten und von vordefinierten Objekten:</p>
<pre class="brush: js">
var a = ['ist aufzählbar'];

a.propertyIsEnumerable(0);          // gibt true zurück
a.propertyIsEnumerable('length');   // gibt false zurück

Math.propertyIsEnumerable('random');   // gibt false zurück
this.propertyIsEnumerable('Math');     // gibt false zurück
</pre>
<h3 id="Example:_Direct_versus_inherited_properties" name="Example:_Direct_versus_inherited_properties">Beispiel: Direkte und vererbte Eigenschaften</h3>
<pre class="brush: js">
var a = [];
a.propertyIsEnumerable('constructor');       // gibt false zurück

function ersterConstructor() {
  this.eigenschaft = 'ist nicht aufzählbar';
}

ersterConstructor.prototype.ersteMethode = function () {};

function zweiterConstructor() {
  this.methode = function methode() { return 'ist aufzählbar'; };
}

zweiterConstructor.prototype = new ersterConstructor;
zweiterConstructor.prototype.constructor = zweiterConstructor;

var o = new zweiterConstructor();
o.eineEigenschaft = 'ist aufzählbar';

o.propertyIsEnumerable('eineEigenschaft');   // gibt true zurück
o.propertyIsEnumerable('methode');           // gibt true zurück
o.propertyIsEnumerable('eigenschaft');       // gibt false zurück

o.eigenschaft = 'ist aufzählbar';

o.propertyIsEnumerable('eigenschaft');       // gibt true zurück

// Diese Eigenschaften werden nicht beachtet, sondern
// geben bei propertyIsEnumerable immer false zurück:
// (Obwohl die beiden letzteren in for...in-Schleifen beachtet werden)

o.propertyIsEnumerable('prototype');         // gibt false zurück (wie bei JS 1.8.1/FF3.6)
o.propertyIsEnumerable('constructor');       // gibt false zurück
o.propertyIsEnumerable('firstMethod');       // gibt false zurück</pre>
<h2 id="See_also" name="See_also">Siehe auch...</h2>
<ul>
  <li><a href="/en-US/docs/Enumerability_and_ownership_of_properties" title="/en-US/docs/Enumerability_and_ownership_of_properties">Enumerability and ownership of properties</a></li>
  <li><a href="/en-US/docs/JavaScript/Reference/Statements/for...in" title="JavaScript/Reference/Statements/for...in">for...in</a></li>
  <li><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys" title="JavaScript/Reference/Global Objects/Object/keys">Object.keys</a></li>
  <li><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty" title="JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty()</a></li>
</ul>
Zu dieser Version zurücksetzen