Verwenden der in JavaScript integrierten Objekte

JavaScript verfügt über eine Reihe integrierter Objekte, die die Flexibilität der Sprache erweitern. Diese Objekte sind Datum, Mathematik, Zeichenfolge, Array und Objekt. Einige dieser Objekte sind aus der Java-Sprachspezifikation "entlehnt", aber die Implementierung von JavaScript ist unterschiedlich. Wenn Sie mit Java vertraut sind, sollten Sie die integrierten Objekttypen von JavaScript sorgfältig untersuchen, um Verwirrung zu vermeiden.

Das JavaScript-Objektmodell ist einfach. Der Großteil dieser Objekte befasst sich mit Fensterinhalten - Dokumenten, Links, Formularen usw. Zusätzlich zu Fensterinhaltsobjekten unterstützt JavaScript eine kleine Handvoll "integrierter" Objekte. Diese integrierten Objekte sind unabhängig vom Fensterinhalt verfügbar und funktionieren unabhängig von der Seite, die Ihr Browser geladen hat.

JavaScript lernen

Dieser Artikel ist Teil des JavaWorld-Archivs für technische Inhalte. Sie können viel über die JavaScript-Programmierung lernen, indem Sie Artikel in der JavaScript-Reihe lesen. Beachten Sie jedoch, dass einige der Informationen wahrscheinlich veraltet sind. Weitere Informationen zum Programmieren mit JavaScript finden Sie unter "Verwenden von JavaScript und Formularen" und "Debuggen von JavaScript-Programmen".

Die integrierten Objekte sind Datum, Mathematik, Zeichenfolge, Array und Objekt. Jedes wird auf einzigartige und nicht ganz konsistente Weise verwendet. Darüber hinaus implementieren neuere Versionen von JavaScript (wie in Netscape "Atlas", derzeit in der Beta-Version) mehrere dieser Objekte auf andere Weise als in Netscape 2.0. In dieser Spalte werden diese integrierten Objekte und ihre Verwendung behandelt. Und wir werden die Macken notieren, auf die Sie stoßen, wenn Sie diese Objekte auf Ihre JavaScript-Seiten anwenden.

Grundlegendes zum Zeichenfolgenobjekt

Von allen JavaScript-Objekten wird das String-Objekt am häufigsten verwendet. In der JavaScript-Implementierung von Netscape 2.0 werden neue Zeichenfolgenobjekte implizit mithilfe einer Variablenzuweisung erstellt. Zum Beispiel,

var myString = "This is a string";

Erstellt eine Zeichenfolge mit dem angegebenen Text namens myString.In Netscape 2.0 gibt es kein tatsächliches Objekt namens Zeichenfolge. Der Versuch, ein neues Zeichenfolgenobjekt mithilfe der neuen Anweisung zu instanziieren, führt zu einem Fehler, da Zeichenfolge (oder Zeichenfolge) kein definiertes Schlüsselwort ist . In der Atlas-Version von Netscape ist String jedoch ein echtes Objekt, und mit dem Schlüsselwort String können neue Zeichenfolgen erstellt werden. Die folgenden zwei Ansätze sind in Atlas zulässig, jedoch nicht in Netscape 2.0.

var myString = new String(); myString = "This is a string";

und

var myString = new String ("This is a string");

String-Objekte haben eine Eigenschaft: Länge. Die Eigenschaft length gibt die Länge der Zeichenfolge zurück und verwendet die Syntax, string.length,wobei string der Name der Zeichenfolgenvariablen ist. Beide der folgenden Anzeigen 16.

alert ("This is a string".length)

und

var myString = "This is a string"; alert (myString.length);

Während es möglicherweise nur eine Zeichenfolgeeigenschaft gibt, unterstützt JavaScript eine große Anzahl von Methoden, die mit Zeichenfolgen verwendet werden können. Diese Methoden können grob in zwei große Lager unterteilt werden: Zeichenfolgenverwaltung und Textformat.

Mehr von JavaWorld

Möchten Sie weitere Java-Unternehmensnachrichten? Holen Sie sich den JavaWorld Enterprise Java-Newsletter in Ihren Posteingang.

String - Management - Methoden umfassen substring, indexOf, lastIndexOf, und toLowerCase. Diese werden verwendet, um den Inhalt der Zeichenfolge auf irgendeine Weise zurückzugeben oder zu ändern. Beispielsweise gibt die Teilstring-Methode einen bestimmten Teil einer Zeichenfolge zurück. Die indexOf-Methode bestimmt die Position eines Zeichens oder einer Gruppe von Zeichen in einer Zeichenfolge. Und die toLowerCase-Methode konvertiert die Zeichenfolge in Kleinbuchstaben. (Wie Sie sich vorstellen können, gibt es auch eine toUpperCaseMethode.)

Textformatierungsmethoden werden verwendet, um Text in einem Dokument auf besondere Weise zu formatieren. Sie werden als Alternative zur Verwendung von HTML-Tags für denselben Zweck bereitgestellt. Diese Methoden umfassen groß, klein, sup, sub, Anker, Link und Blinken.

String-Methoden können direkt für Strings oder für Variablen verwendet werden, die Strings enthalten. Methoden verwenden immer offene und geschlossene Klammern, auch wenn die Methode keine Parameter verwendet. Um beispielsweise Text in Großbuchstaben umzuwandeln, verwenden Sie eine der folgenden Methoden:

var tempVar = "this text is now upper case".toUpperCase();

oder

var myString = "this text is now upper case"; var tempVar = myString.toUpperCase();

In Netscape 2.0 gibt es nur ein String-Objekt, aus dem alle Strings erstellt werden. Umgekehrt sind Zeichenfolgen in Atlas erstklassige Objekte, und jede neue Zeichenfolge wird als separates Objekt behandelt. Das Einzelobjektverhalten von Zeichenfolgen in Netscape 2.0 kann einige subtile Nebenwirkungen verursachen. Nehmen Sie das folgende kurze Skriptsegment. Es werden zwei Zeichenfolgen erstellt: string1und string2. String1 wird eine neue Eigenschaft (extra genannt) zugewiesen. Die Warnmeldung zeigt jedoch, dass die Eigenschaft jetzt auch zu string2 gehört.

 string1 = "this is string 1" string2 = "this is string 2" string1.extra = "new property" alert (string2.extra) 

Technisch gesehen sind Zeichenfolgen in JavaScript "unveränderlich". Das heißt, der Inhalt der Zeichenfolge ist statisch und kann nicht geändert werden. In Netscape 2.0 kann JavaScript eine Zeichenfolge nur ändern, indem ein neuer Speicherort dafür erstellt wird. Aus diesem Grund ist ein Skript, das eine Zeichenfolge häufig ändert, anfällig für Speicherfehler. Jedes Mal, wenn die Zeichenfolge geändert wird, erstellt JavaScript einen neuen Speicherort für die neue Version. Vor der Speicherbereinigung werden neue Zeichenfolgen erstellt, um die alte Zeichenfolge zu zerstören. Schließlich verwendet JavaScript den gesamten verfügbaren Speicher, und es tritt ein Fehler "Nicht genügend Speicher" auf.

Ein klassisches Beispiel für dieses Problem sind die beliebten JavaScript-Nachrichten-Scroller, in denen eine Nachricht in der Statusleiste oder in einem Textfeld gescrollt wird. Für jeden Durchgang definiert der Scroller die angezeigte Zeichenfolgenvariable neu. Der Speicher wird schließlich erschöpft, da JavaScript mit jedem Durchgang neue Instanzen der Zeichenfolge erstellt. Das folgende Skript verursacht beispielsweise (früher auf einigen Plattformen wie Windows 3.1) einen Fehler "Nicht genügend Speicher":

 var count = 0; var text = "This is a test of a JavaScript scroller. "; scroll(); function scroll () { var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count < text.length) count ++; else count = 0; setTimeout ("scroll()", 333); // 333ms is the minimum delay for Netscape 2.0 } 

Durch einfaches Umschreiben wird das Problem des Erstellens neuer Speicherblöcke vermieden. Löschen Sie die myString-Variablenzuweisung und analysieren Sie den Text mithilfe von window.status direkt in der Statusleiste.

window.status = text.substring (count, text.length) + text.substring (0, Count)

(Während der obige Ansatz das Problem der JavaScript-Replikation von Zeichenfolgenobjekten vermeidet, treten aufgrund der Verwendung von immer noch Speicherlecks auf setTimeout method. Über viele Iterationen - normalerweise mehrere Tausend oder mehr - verbraucht setTimeout den gesamten verfügbaren Speicher, und schließlich zeigt JavaScript ein " nicht genügend Speicher "Nachricht.)

Als Referenz sind hier die Methoden und Eigenschaften aufgeführt, die mit dem String-Objekt von JavaScript verwendet werden:

String-Eigenschaften

Länge Die Länge einer Zeichenfolge

String-Methoden

Anker Erstellt einen benannten Anker (Hypertext-Ziel)
groß Setzt den Text auf groß
blinken Setzt den Text auf Blinken
Fett gedruckt Setzt den Text auf Fettdruck
charAt Gibt das Zeichen an einer bestimmten Position zurück
Fest Legt Text in fester Schrift fest
Schriftfarbe Legt die Schriftfarbe fest
Schriftgröße Legt die Schriftgröße fest
Index von Gibt das erste Vorkommen des Zeichens x ab Position y zurück
Kursivschrift Setzt den Text kursiv
lastIndexOf Returns the last occurrence of character x starting from position y
link Creates a hyperlink
small Sets text to small
strike Sets text to strikeout
sub Sets text to subscript
substring Returns a portion of a string
sup Sets text to superscript
toLowerString Converts a string to lowercase
toUpperString Converts a string to uppercase

Using JavaScript as a scientific calculator

JavaScript's Math object provides advanced arithmetic and trigonometric functions, expanding on JavaScript's basic arithmetic operators (plus, minus, multiply, divide). The Math object in JavaScript is borrowed from Java. In fact, the implementation of the Math object in JavaScript closely parallels the Math class in Java, except that the JavaScript Math object offers fewer methods.

JavaScript's Math object properties are treated as constants. In fact, the property names are in all upper-case, following the usual convention of capitalizing variable constants. These properties return often-used values, including pi and the square root of 2. The Math methods are used in mathematical and trigonometric calculations. Handy Math-object methods include ceil, floor, pow, exp (exponent), max, min, round, and random. (Random is only available when using the X Window platform, however.)

The Math object is static, so you don't need to create a new Math object in order to use it. To access the properties and method of the Math object, you merely specify the Math object, along with the method or property you wish. For example, to return the value of pi, you use:

var pi = Math.PI;

Similarly, to use a math method you provide the name of the method, along with the parameters you wish to use. For example, to round the value of pi, you'd use:

var pi = Math.PI; var pieAreRound = Math.round(pi); // displays 3

Note that you must specify the Math object by name for each Math method/property you wish to use. JavaScript does not recognize the keywords PI and round all by themselves. Exception: you may use the with statement to associate the names of methods and properties with the Math object. This technique is a handy space-saver when you must use several Math properties and methods. The previous example can be written as

with (Math) { var pi = PI; var pieAreRound = round(pi); alert (pieAreRound) }

For your reference, here are the properties and methods supported by JavaScript's Math object.

Math Properties

E Euler's constant
LN2 The natural logarithm of 2
LN10 The natural logarithm of 10
LOG2E The base 2 logarithm of e
LOG10E The base 10 logarithm of e
PI The numeric equivalent of PI: 3.14 etc.
SQRT1_2 The square root of one-half
SQRT2 The square root of 2

Math Methods

abs Returns the absolute value of a number
acos Returns the arc cosine of a number
asin Returns the arc sine of a number
atan Returns the arc tangent of a number
ceil Returns the least integer greater than or equal to a number
cos Returns the cosine of a number
exp Returns e (Euler's constant) to the power of a number
floor Returns the greatest integer less than or equal to its argument
log Returns the natural logarithm (base e) of a number
max Returns the greater of two values
min Returns the lesser of two values
pow Returns the value of a number times a specified power
random Returns a random number (X-platforms only)
round Returns a number rounded to the nearest whole value
sin Returns the sine of a number
sqrt Returns the square root of a number
tan Returns the tangent of a number

Asking JavaScript for a date

Also borrowed by Java is the Date object, which can be used in JavaScript to determine the current time and date. A popular JavaScript application of the Date object is displaying a digital clock in a text box. The script uses the Date object to update the clock once every second. You also use the Date object to perform date math. For example, your script might determine the number of days between now and a certain future date. You can use this to display a "countdown," such as the number of days left of your company's big sale.

JavaScript treats the Date object like a constructor class. To use Date you must create a new Date object; you can then apply the various Date methods to get and set dates. (The Date object has no properties.) If you're familiar with the Date class in Java, you'll find the properties of the JavaScript Date object largely the same. The most commonly used methods are the get methods, which obtain the time and date of the value in the Date object. These methods are:

  • getHours() - Returns the hour
  • getMinutes() - Returns the minutes
  • getSeconds() - Returns the seconds
  • getYear() - Returns the year ("96" is 1996)
  • getMonth() - Returns the month ("0" is January)
  • getDate() - Returns the day of the month
  • getDay() - Returns the day of the week ("0" is Sunday)

(Das Date-Objekt von JavaScript ermöglicht auch das Festlegen von Uhrzeit und Datum des Date-Objekts, diese werden jedoch selten verwendet.)

Das Erstellen eines neuen Date-Objekts kann verschiedene Formen annehmen. Um ein Objekt zurückzugeben, das das aktuelle Datum und die aktuelle Uhrzeit enthält, verwenden Sie das Date-Objekt ohne Parameter. Im Folgenden date_objwird ein neues Objekt angezeigt, das den Wert des aktuellen Datums und der aktuellen Uhrzeit enthält, der von der Systemuhr des Computers festgelegt wird.

var date_obj = new Date();

Alternativ können Sie ein bestimmtes Datum und eine bestimmte Uhrzeit als Teil des Datumskonstruktors angeben. Jede dieser Methoden ist zulässig. Beide setzen das neue Datumsobjekt auf den 1. Januar 1997 um Mitternacht Ortszeit.

var date_obj = new Date ("January 1 1997 00:00:00")

und

var date_obj = new Date (97, 0, 1, 12, 0, 0)

Um eine Datumsmethode zu verwenden, hängen Sie die Methode an das zuvor erstellte Datumsobjekt an. Verwenden Sie beispielsweise Folgendes, um das aktuelle Jahr zurückzugeben:

var now = new Date(); var yearNow = now.getYear();

Als Referenz finden Sie hier die Methoden, die vom Date-Objekt von JavaScript unterstützt werden.