Klassen in JavaScript [] (Klassen in JavaScript), Lektion, Seite 723169
https://www.purl.org/stefan_ram/pub/klassen_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Klassen in JavaScript

Anzeige der Klasse eines Objektes (».call« nicht vergessen!)
Object.prototype.toString.call( new Number( 3.14 )) /* "[object Number]" */

»Number« ist darin das “value of the [[Class]] internal property”, also praktisch die Klasse des Objekts! (Auch, wenn einige Quellen behaupten, in JavaScript  gäbe es keine Klassen.)

function className( object )
{ return 0,
Object.prototype.toString.call( object ).
replace( "\[object ", "" ).replace( "\]", "" ); }

className( new Number( 3.14 ))

Klassen

Neu am 1. Juli 2014

“The value of the [[Class]] internal property is defined by this specification for every kind of built-in object. The value of the [[Class]] internal property of a host object may be any String value except one of "Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", and "String". The value of a [[Class]] internal property is used internally to distinguish different kinds of objects. Note that this specification does not provide any means for a program to access that value except through Object.prototype.toString (see 15.2.4.2).” – 8.6.2 Object Internal Properties and Methods, Standard ECMA-262, 5.1 Edition / June 2011

Object.prototype.toString.call( "" )

"[object String]"

^ ^
| |
Typ Klasse

Object.prototype.toString.call( 1 )

"[object Number]"

^ ^
| |
Typ Klasse

Object.prototype.toString.call( true )

"[object Boolean]"

^ ^
| |
Typ Klasse

Die Klasse eines Objektes ist eine Eigenschaft, die in JavaScript derzeit sonst kaum eine Rolle spielt, aber auf die oben gezeigte Weise sichtbar gemacht werden kann.

Dennoch ist es manchmal ganz nützlich von der Klasse eines Objekts sprechen zu können, wenn man dies von anderen Programmiersprachen her so gewohnt ist.

Um das Verhalten von Objekten in JavaScript zu verstehen, muß man sich aber vor allem mit Prototypen und ferner Konstruktoren beschäftigen. Klassen kann man dafür vollkommen ignorieren.

In zukünftigen Versionen von JavaScript, die aber Mitte 2014 noch nicht verbreitet sind, wird es ein Schlüsselwort »class« geben, das aber auch nur eine alternative Schreibweise für eine bestimmte Verwendung von Prototypen und Konstruktoren sein wird.

und – als allumfassender Basistyp aller eben genannten Objekttypen:

[object Object]

Konsole

typeof 2 // "number" //

Object.prototype.toString.call( new String( "a" )) // "[object String]" //

Object.prototype.toString.call( new String( "a" )).slice( 8, -1 ) // "String" //

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723169 stefan_ram:723169 Klassen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723169, slrprddef723169, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/klassen_javascript