Korištenje JavaScript ugrađenih objekata

JavaScript ima brojne ugrađene objekte koji proširuju fleksibilnost jezika. Ti su objekti datum, matematika, niz, niz i objekt. Nekoliko ovih objekata "posuđeno je" iz specifikacije jezika Java, ali JavaScript ih implementira drugačije. Ako ste upoznati s Javom, morat ćete pažljivo ispitati ugrađene vrste objekata JavaScript kako biste izbjegli zabune.

JavaScript objektni model jednostavan je. Većina tih predmeta bavi se sadržajem prozora - dokumentima, vezama, obrascima i tako dalje. Osim objekata s sadržajem prozora, JavaScript podržava i malobrojne "ugrađene" objekte. Ovi ugrađeni objekti dostupni su bez obzira na sadržaj prozora i rade neovisno o stranici koju je preglednik učitao.

Učenje JavaScript-a

Ovaj je članak dio arhive tehničkog sadržaja JavaWorld. Čitajući članke u JavaScript seriji možete naučiti puno o programiranju JavaScript , samo imajte na umu da će neke informacije vjerojatno zastarjeti. Pogledajte "Korištenje JavaScript-a i obrazaca" i "Otklanjanje pogrešaka u JavaScript programima" za više informacija o programiranju pomoću JavaScript-a.

Ugrađeni objekti su Datum, Matematika, Niz, Niz i Objekt. Svaka se koristi na jedinstven i ne baš dosljedan način. Nadalje, novije verzije JavaScript-a (kao što je pronađeno u Netscapeu "Atlas", trenutno u beta verziji) implementiraju nekoliko ovih objekata na drugačiji način nego u Netscapeu 2.0. U ovom ćemo stupcu adresirati ove ugrađene objekte i kako ih koristiti. Zabilježit ćemo i hirove s kojima ćete se susretati dok primjenjujete ove objekte na svoje JavaScript stranice.

Razumijevanje objekta niza

Od svih JavaScript objekata najviše se koristi objekt String. U implementaciji Netscape 2.0 JavaScript, novi objekti niza izrađuju se implicitno pomoću dodjele varijable. Na primjer,

var myString = "This is a string";

stvara niz, s navedenim tekstom, nazvanim myString.U Netscape 2.0, nema stvarnog objekta koji se naziva string, a pokušaj instanciranja novog String objekta pomoću novog izraza rezultira pogreškom, jer String (ili niz) nije definirana ključna riječ . Međutim, u Atlasovoj verziji Netscapea String je vjerodostojan objekt, a ključna riječ String može se koristiti za stvaranje novih nizova. Sljedeća su dva pristupa dopuštena u Atlasu, ali ne i u Netscapeu 2.0.

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

i

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

Stringovi imaju jedno svojstvo: length. Svojstvo length vraća duljinu niza i koristi sintaksu string.length,gdje je string naziv varijable niza. Oba sljedeća prikaza 16.

alert ("This is a string".length)

i

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

Iako može postojati samo jedno svojstvo niza, JavaScript podržava velik broj metoda koje se mogu koristiti sa nizovima. Te se metode mogu grubo podijeliti u dva široka tabora: upravljanje nizovima i format teksta.

Više od JavaWorlda

Želite još Java Enterprise vijesti? Dohvatite JavaWorld Enterprise Java bilten dostavljen u vašu pristiglu poštu.

Metode upravljanja Gudački uključuju substring, indexOf, lastIndexOf, i toLowerCase. Koriste se za vraćanje ili promjenu sadržaja niza na neki način. Na primjer, metoda podniza vraća navedeni dio niza. Metoda indexOf određuje mjesto znaka ili grupe znakova u nizu. A metoda toLowerCase pretvara niz u mala slova. (Kao što možete zamisliti, postoji i toUpperCasemetoda.)

Metode oblikovanja teksta koriste se za oblikovanje teksta u dokumentu na neki poseban način i pružaju se kao alternativa korištenju HTML oznaka u istu svrhu. Te metode uključuju veliko, malo, sup, pod, sidro, vezu i treptaj.

Metode niza mogu se koristiti izravno na nizovima ili na varijablama koje sadrže nizove. Metode uvijek koriste otvorene i zatvorene zagrade, čak i ako metoda ne koristi parametre. Na primjer, za pretvaranje teksta u velika slova upotrijebili biste jedno od sljedećeg:

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

ili

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

U Netscapeu 2.0 postoji samo jedan String objekt i svi se nizovi stvaraju iz njega. Suprotno tome, nizovi su prvoklasni objekti u Atlasu, a svaki novi niz tretira se kao zaseban objekt. Ponašanje nizova s ​​jednim objektom u Netscapeu 2.0 može uzrokovati neke suptilne nuspojave. Uzmite segment kratkog skripta koji slijedi. Stvorene su dvije žice: string1i string2. Novo svojstvo (koje se naziva ekstra) dodjeljuje se string1. Ipak poruka upozorenja pokazuje da svojstvo sada također pripada nizu2.

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

Tehnički gledano, nizovi su "nepromjenjivi" u JavaScript-u. Odnosno, sadržaj niza je statičan i ne može se mijenjati. U Netscapeu 2.0 JavaScript je sposoban mijenjati niz samo stvaranjem novog mjesta u memoriji za njega. Zbog toga je skripta koja mnogo puta modificira niz sklona pogreškama u memoriji. Svaki put kad se niz promijeni, JavaScript kreira novo mjesto u memoriji za novu verziju. Novi nizovi se stvaraju prije odvoženja smeća kako bi se uništio stari niz. Na kraju JavaScript koristi svu raspoloživu memoriju i pojavljuje se pogreška "nestalo je memorije".

Klasičan primjer ovog problema može se vidjeti u popularnom JavaScript "pomicanju poruka", gdje se poruka pomiče u statusnoj traci ili tekstnom okviru. Za svaki prolaz klizač redefinira prikazanu varijablu niza. Memorija se na kraju troši jer JavaScript sa svakim prolazom stvara nove instance niza. Na primjer, sljedeća skripta na kraju će (prije na nekim platformama, kao što je Windows 3.1) uzrokovati pogrešku "nedostaje memorije":

 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 } 

Jednostavnim prepisivanjem izbjegava se problem stvaranja novih blokova memorije. Izbrišite dodjelu varijable myString i raščlanite tekst izravno na statusnu traku pomoću window.status.

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

(Iako gornji pristup izbjegava JavaScript-ov problem replikacije niza-objekata, do curenja memorije i dalje dolazi zbog upotrebe setTimeout method.) Tijekom mnogih iteracija - obično nekoliko tisuća ili više - setTimeout će potrošiti svu raspoloživu memoriju i na kraju će JavaScript prikazati " poruka o nestanku memorije.)

Za referencu, evo metoda i svojstava koja se koriste s JavaScript objektom stringa:

Svojstva niza

duljina Duljina niza

String metode

sidro Stvara imenovano sidro (hipertekst cilj)
velik Postavlja tekst na veliki
treptati Postavlja tekst na treptanje
podebljano Postavlja tekst podebljano
charAt Vraća znak na navedenoj poziciji
fiksne Postavlja tekst fontom s fiksnom visinom
boja fonta Postavlja boju fonta
veličina fonta Postavlja veličinu fonta
indexOf Vraća prvu pojavu znaka x počevši od položaja y
kurziv Postavlja tekst u kurzivu
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)

(JavaScript-ov objekt Date također omogućava postavljanje vremena i datuma objekta Date, ali se oni rijetko koriste.)

Konstruiranje novog objekta Date može imati nekoliko oblika. Da biste vratili objekt koji sadrži trenutni datum i vrijeme, koristite objekt Date bez parametara. U nastavku date_objslijedi novi objekt koji sadrži vrijednost trenutnog datuma i vremena, postavljene sistemskim satom računala.

var date_obj = new Date();

Alternativno, možete odrediti dati datum i vrijeme kao dio konstruktora datuma. Nijedna od ovih metoda nije dopuštena - obje postavljaju novi datumski objekt na 1. siječnja 1997. u ponoć po lokalnom vremenu.

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

i

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

Da biste koristili metodu Date, dodajte je metodi datumskom objektu koji ste prethodno stvorili. Na primjer, za povratak tekuće godine upotrijebite:

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

Za referencu, evo metoda koje podržava JavaScript-ov objekt Date.