Kurs obiektowego JavaScript (19)

Autor: Damian Chodorek • Opublikowany: 6 października 2014 • Ostatnia aktualizacja: 8 lutego 2015 • Kategoria: javascript, kursy

Kolejne obiekty wbudowane. Data i czas w JS. Manipulacja tekstem.

Ostatnio opisałem kilka globalnych obiektów w JS oraz ich cechy charakterystyczne. W tej części zostaną opisane kolejne.

Boolean

To konstruktor wrappera prymitywnego typu Boolean. Co to znaczy? Jeśli go wywołasz to dostaniesz obiekt, a nie zwykłą wartość true lub false.

var b=new Boolean();
typeof b; //"object"

Jeśli nie do końca rozumiesz czym jest wrapper, to zachęcam do zapoznania się z poprzednim artykułem.

Aby obiekt zwrócił prymitywną wartość (true lub false), którą przechowuje, należy skorzystać z metody valueOf.

var b=new Boolean();
typeof b.valueOf(); //"boolean"
b.valueOf(); //false - domyślna wartość

Funkcja Boolean użyta bez słowa new konwertuje wartości innych typów do typu Boolean. Podobnie jak !!.

Boolean("tekst"); //true
!!"tekst"; //true
Boolean(""); //false
!!""; //false

Number

To konstruktor zachowujący się jak poznany przed chwilą Boolean. Oto co mam na myśli:

  • kiedy zostanie użyte słowo new, tworzony jest obiekt,
  • kiedy nie zostanie użyte, funkcja zadziała podobnie jak parseInt() i parseFloat().

Funkcja Number() posiada interesujące i przydatne pola oraz metody. Przykłady poniżej.

Number.MAX_VALUE; //maksymalna wartość w JS
Number.MIN_VALUE; //minimalna wartość
Number.POSITIVE_INFINITY; //Infinity
Number.NEGATIVE_INFINITY; //-Infinity
Number.NaN;

var n=new Number(123.456);
n.toFixed(1); //123.5

(123.456).toExponential(); //1.2345e+4 - niejawna konwersja wartości na obiekt

n.toPrecision(5); //123.46

(255).toString(); //"255"
(255).toString(16); //"ff"
(255).toString(2); //11111111

String

I znów – użycie konstruktora tworzy obiekt, a nie wartość prymitywną.

var s1="asdw";
typeof s1; //"string"

var s2=new String("asdw");
typeof s2; //"object"

Obiekt String przypomina trochę tablicę. Również posiada operator [] oraz pole length. Ważne jest zrozumienie jednego faktu – prymitywny string nie posiada pól i metod, ale JS niejawnie konwertuje go do obiektu kiedy zajdzie potrzeba. Dlatego możliwe jest wykonanie instrukcji jak poniżej.

"asdw".length; //4

Ciekawostka: konwersja prymitywnego String zawierającego pusty ciąg znaków do Boolean zwróci false, natomiast obiektu String zwróci true.

Boolean(""); //false
Boolean( new String("") ); //true

To dlatego, że w drugim przypadku konwertowany jest istniejący obiekt, a więc coś niezerowego.

Manipulacja tekstem

Obiekt String posiada bardzo przydatne metody, które umożliwiają edycję tekstu.

  • toUpperCase(), toLowerCase() – metody przekształcają znaki na wielkie oraz małe litery,
  • charAt() – metoda zwraca znak, który znajduje się na pozycji zdefiniowanej przez jej parametr, jeśli wskazuje poza zakres, zwróci "",
  • indexOf() – zwraca pozycję, na której znajduje się podany znak; można również podać pozycję od, której ma zacząć poszukiwania,
  • lastIndexOf() – podobnie jak powyżej, ale rozpoczyna poszukiwanie od końca (pozycja jednak jest liczona od początku),
  • split() – tworzy tablicę ciągów znaków, rozdzielając ciąg wejściowy według zdefiniowanego separatora,
  • slice() – zwraca podciąg znaków zdefiniowany przez podane parametry,
  • join() – działa odwrotnie łącząc tablicę ciągów w jeden, do sklejenia wykorzystuje podany łącznik,
  • concat() – działa jak operator +.

Jak sprawdzić czy dany tekst zawiera jakiś podciąg? Używając idexOf().

var url="http://damianchodorek.com/";
if( url.indexOf("com")!=-1 ){
  console.log("fragment odnaleziony");
}else{
  console.log("fragment nieodnaleziony");
}

Do dokładniejszej analizy tekstu pod kątem wyrażeń regularnych służą bardziej wyspecjalizowane metody. Ich użycie zostanie omówione przy okazji tematu wyrażeń regularnych.

Math

Nie jest to zwykła funkcja, toteż nie można użyć łącznie z nią słowa new. Jest to wbudowany obiekt zawierający stałe matematyczne i przydatne metody.

Math.PI;
Math.SQRT2;
Math.E;
Math.LN2;
Math.LN10;

Poniżej kilka bardzo przydatnych metod.

  • random() – generuje wartość losową pomiędzy 0, a 1, lub z innego przedziału podanego jako parametr,
  • floor(), ceil(), round() – zaokrągla liczbę rzeczywistą do wartości: większej, mniejszej, najbliższej,
  • pow() – podnosi liczbę do potęgi,
  • sqrt() – zwraca pierwiastek kwadratowy,
  • sin(), cos(), atan() – działanie jest oczywiste, zwraca wartości funkcji trygonometrycznych.

Date

To konstruktor tworzący obiekty reprezentujące datę.

new Date(); //Mon Oct 06 2014 20:55:58 GMT+0200 (Środkowoeuropejski czas letni)
new Date('2001 01 12'); //Fri Jan 12 2001 00:00:00 GMT+0100 (Środkowoeuropejski czas stand.)
new Date('1 2 2013'); //Wed Jan 02 2013 00:00:00 GMT+0100 (Środkowoeuropejski czas stand.)
new Date('12 may 2004 12:25'); //Wed May 12 2004 12:25:00 GMT+0200 (Środkowoeuropejski czas letni)

Jak więc widzisz – przekazując tekstową reprezentację daty możemy utworzyć obiekt, który ją poprawnie zinterpretuje i udostępni więcej informacji na jej temat. Kiedy konstruktor nie posiada argumentów, zwracana jest obecna data.

Bardziej zaufany sposób tworzenia daty odbywa się poprzez przekazanie do konstruktora wartości liczbowych reprezentujących dni, miesiące, godziny itp.

new Date(2009, 1, 2, 12, 25, 5); //Mon Feb 02 2009 12:25:05 GMT+0100 (Środkowoeuropejski czas stand.)

Uwaga! Miesiące rozpoczynają się od 0, a więc liczba zero oznacza styczeń. Jeśli konstruktor dostanie parametr, którego wartość przekracza możliwą, to nadwyżkę doda do daty.

new Date(2008, 12, 32); //Sun Feb 01 2009 00:00:00 GMT+0100 (Środkowoeuropejski czas stand.)

Obiekt Date może być także zainicjalizowany przy użyciu znaku czasowego (liczba milisekund od 1 stycznia 1970 roku).

Poniżej kilka naprawdę przydatnych metod.

  • getMonth(), getDay(), getHours() – zwracają wyłącznie miesiąc, dzień i godzinę z całej daty,
  • setMonth(), setDay(), setHours() – dzięki nim, można łatwo ustawić w dacie konkretne wartości miesięcy, dni i godzin,
  • parse() – metoda konstruktora Date, przyjmuje parametr tekstowy i zwraca znak czasowy (timestamp),
  • UTC() – przyjmuje parametry reprezentujące lata, miesiące, dni itp. a następnie produkuje UTC.

W tym artykule to wszystko. Przejdź do następnej części:

Kurs obiektowego JavaScript (20)

Zobacz również
Kurs obiektowego JavaScript (17)Obiekt console i jego metody.
Kurs obiektowego JavaScript (18)Obiekty i konstruktory wbudowane.
Kurs obiektowego JavaScript (20)Dokładne omówienie wyrażeń regularnych.
Kurs obiektowego JavaScript (21)Mechanizm obsługi błędów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.