Operatory specjalne

Operatory specjalne

JavaScript udostępnia następujące operatory specjalne:

Operator warunkowy

Operator warunkowy jest tylko operatorem JavaScript, który pobiera trzy argumenty. Operator może mieć jedną lub dwie wartości oparte na warunku. Składnia:

condition ? val1 : val2

Jeśli condition (warunek) jest prawdziwy (true), operator ma wartość val1. W przeciwnym razie posiada wartość val2. Możesz użyć operatora warunkowego wszędzie, gdzie będziesz używał operatorów standardowych.

Na przykład:

status = (age >= 18) ? "adult" : "minor"

Ta instrukcja przydziela wartość "adult" do status, jeśli posiada osiemnaście lub więcej lat. Z drugiej strony przydzielasz "minor" do status.

Operator przecinka

Operator przecinka, prosty poszukujący obu argumentów zwracających drugi argument. Ten operator początkowo używany był wewnątrz pętli for. Pozwalał wielokrotnie na aktualizację zmiennych, za każdym razem kiedy pętla jest wykonywana.

Na przykład, jeśli a jest 2-u wymiarową tablicą z 10 elementami na stronę, następujący operator przecinkowy to kod użytkownika będący przyrostem dwóch zmiennych na raz. Kod drukuje wartości diagonalne elementów w tablicy:

for (var i=0, j=9; i <= 9; i++, j--)
   document.writeln("a["+i+","+j+"]= " + a[i*10 +j])

Uwaga te dwuwymiarowe tablice są już nie wspierane. Ten przykład emuluje dwuwymiarowe tablice używając jedno wymiarowej tablicy.

delete

Operator delete usuwa obiekty, własności obiektów, lub elementy określone w indeksie tablicy. Składnia:

delete objectName
delete objectName.property
delete objectName[index]
delete property // legal only within a with statement

gdzie: objectName jest nazwą obiektu, property są to istniejące własności i index reprezentuje liczbę całkowita w lokalizacji z elementem tablicy.

Czwarta forma jest dopuszczalna tylko wewnątrz instrukcji with, aby usunąć własności z obiektu.

Możesz użyć operator delete do usunięcia zmiennych zadeklarowanych bez zastrzeżeń, ale nie te z deklaracją instrukcji var.

Jeśli operator delete jest prawidłowy, to ustawienia własności lub usuniętego elementu są nieczytelne (undefined). Operator delete zwraca true, jeśli operacja jest możliwa; zwraca false, jeżeli operacja nie jest możliwa.

x=42
var y= 43
myobj=new Number()
myobj.h=4      // tworzy własności h
delete x       // zwraca true (potrafi usunąć, jeśli zadeklarujemy brak zastrzeżeń)
delete y       // zwraca false (nie potrafi usunąć jeśli zadeklarujemy z var)
delete Math.PI // zwraca false (nie potrafi usunąć predefiniowanych własności)
delete myobj.h // zwraca true (potrafi usunąć własności zdefiniowane przez użytkownika)
delete myobj   // zwraca true (potrafi usunąć, jeśli zadeklarujemy brak zastrzeżeń)

Usuwanie tablicy elementów
Kiedy operator delete usunie elementy tablicy, długość tablicy będzie nadal taka sama. Na przykład, jeśli usuniemy a[3], a[4] to wciąż jest a[4] i a[3] ale niezdefiniowane.

Kiedy operator delete usuwa element, który jest elementem tablicowym, taki element nie jest dłuższy w tablicy. W następnym przykładzie, trees[3] jest usunięty z delete.

trees=new Array("redwood","bay","cedar","oak","maple")
delete trees[3]
if (3 in trees) {
   // to nie zadziała
}

Jeśli chcesz, aby element tablicy istniał, ale masz nieznaną wartość, użyj słowa kluczowego undefined zamiast operatora delete. W następnym przykładzie, jest przydzielona niezidentyfikowana wartość trees[3], ale element tablicy nadal istnieje:

trees=new Array("redwood","bay","cedar","oak","maple")
trees[3]=undefined
if (3 in trees) {
   // to zadziała
}

in

Operator in zwraca true, jeśli specyficzne właściwości są w specyficznym obiekcie. Składnia:

propNameOrNumber in objectName

gdzie: propNameOrNumber jest łańcuchem znaków lub wyrażeniem liczbowym reprezentującym własności nazwy lub index tablicy, objectName jest nazwą obiektu.

Następujący przykład używa operatora in.

// Tablice
trees=new Array("redwood","bay","cedar","oak","maple")
0 in trees        // zwracają true
3 in trees        // zwracają true
6 in trees        // zwracają false
"bay" in trees    // zwracają false (musisz mieć specyficzny numer indeksu,
                  // nie ma wartości w tym indeksie)
"length" in trees // zwracają true (długość jest własnością tablicy)

// obiekty predefiniowane
"PI" in Math          // zwracają true
myString=new String("coral")
"length" in myString  // zwracają true

// obiekty użytkownika
mycar = {make:"Honda",model:"Accord",year:1998}
"make" in mycar  // zwracają true
"model" in mycar // zwracają true

instanceof

Operator instanceof zwraca true, jeśli konkretny obiekt jest obiektem konkretnego typu. Składnia:

objectName instanceof objectType

gdzie: objectName jest nazwą obiektu do porównania z objectType a objectType jest typem obiektu, jak naprzykład Date lub Array.

Używamy instanceof, kiedy potrzebujemy porównać typy uruchomionych obiektów. Na przykład, kiedy wystąpi wyjątek, to można, w zależności od zgłoszonego typu wyjątku rozgałęzić różną obsługę tego wyjątku.

Na przykład, następujący kod używa instanceof do określenia czy theDay jest obiektem Date. Ponieważ theDay jest obiektem Date, instrukcja w if jest wykonywana.

theDay=new Date(1995, 12, 17)
if (theDay instanceof Date) {
   // instrukcja do wykonania
}

new

Użyj operatora new, aby utworzyć przykład definicji użytkownika typu obiektowego lub jednego z predefiniowanego typu obiektowego Array, Boolean, Date, Function, Image, Number, Object, Option, RegExp, lub String. Na serwerze możesz, używać także z DbPool, Lock, File lub SendMail. Użyj new w następującym kodzie:

objectName = new objectType ( param1 [,param2] ...[,paramN] )

Możemy także tworzyć obiekty używając inicjatorów obiektu opisanych na stronie Używanie inicjacji obiektu.

Zobacz więcej na temat operatora new w dokumentacji JavaScript.

this

Użyj słowa kluczowego this do wskazania aktualnego obiektu. Generalnie, this wskazuje nazwę obiektu w metodzie. Używamy go następująco:

this[.propertyName]

Przykład 1.
Załóżmy że funkcja validate zatwierdza właściwą wartość, przekazując obiekt oraz górny i dolny zakres.

function validate(obj, lowval, hival) {
   if ((obj.value < lowval) || (obj.value > hival))
      alert("Invalid Value!")
}

Teraz możesz wywoływać validate w każdym formularzu korzystając z zdarzenia onChange. Używamy this do przekazania elementu w formularz, tak jak w przykładzie:

<B>Wprowadź liczbę pomiędzy 18 i 99:</B>
<INPUT TYPE = "text" NAME = "age" SIZE = 3
   onChange="validate(this, 18, 99)">

Przykład 2.
Kiedy kombinujesz z własnościami form, zostaniesz skierowany do tymczasowego obiektu znajdującego się w obrębie tego formularza. W następującym przykładzie, formularz myForm składa się z obiektu Text i przycisku. Kiedy użytkownik kliknie w przycisk, wartość obiektu Text ustawia się na nazwę formularza. Przycisk zawiera zdarzenie onClick używane za pomocą uchwytu this.form do wywołania go w tym samym formularzu, myForm.

<FORM NAME="myForm">
Form name:<INPUT TYPE="text" NAME="text1" VALUE="Beluga">
<P>
<INPUT NAME="button1" TYPE="button" VALUE="Show Form Name"
   onClick="this.form.text1.value=this.form.name">
</FORM>

typeof

Operator typeof jest użyty w jednej z dwóch sytuacji:

1. typeof operand
2. typeof (operand)

Operator typeof zwraca łańcuch zwracający typ nie ocenionego argumentu. Argumentem (operand) jest łańcuch, zmienna, słowo kluczowe lub obiekt, dla którego ten typ będzie zwracany. Nawiasy są opcjonalne.

Przypuśćmy, że zdefiniujemy następujące zmienne:

var myFun = new Function("5+2")
var shape="round"
var size=1
var today=new Date()

Operator typeof zwraca następujący rezultat dla tych zmiennych:

typeof myFun is function
typeof shape is string
typeof size is number
typeof today is object
typeof dontExist is undefined

Dla słowa kluczowego true i null, operator typeof zwraca następujący rezultat:

typeof true is boolean
typeof null is object

Dla liczby lub łańcucha znaków, operator typeof zwraca następujący rezultat:

typeof 62 is number
typeof 'Hello world' is string

Dla wartości własności, operator typeof zwraca właściwość stanowiącą typ zmiennej:

typeof document.lastModified is string
typeof window.length is number
typeof Math.LN2 is number

Dla metod lub funkcji, operator typeof zwraca następujący rezultat:

typeof blur is function
typeof eval is function
typeof parseInt is function
typeof shape.split is function

Dla obiektów predefiniowanych, operator typeof zwraca następujący rezultat:

typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
typeof String is function

void

Operator void jest użyty w jednym z następujących przypadków:

1. void (expression)
2. void expression

Operator void określa wykonane wyrażenie bez zwracania wartości. expression jest wyrażeniem JavaScript do wykonania. Nawiasy otaczające wyrażenie są opcjonalne, jednak dobrym stylem jest ich stosowanie.

Możemy zastosować operator void do określenia wyrażenia jako hipertekstowy odnośnik. Wyrażenie jest wykonywane ale nie jest wczytywane w miejsce bieżącego dokumentu.

Następujący kod tworzy odnośnik hipertekstowy, który nic nie wywoła w momencie, kiedy użytkownik go kliknie. Kiedy użytkownik kliknie w odnośnik, to wykonane zostanie niezidentyfikowane wyrażenie void(0), które nie ma żadnego efektu w języku JavaScript.

<a href="javascript:void(0)">Kliknij tu, nie robiąc nic</a>

Następujący kod tworzy odnośnik, który przedłoży (prześle) zawartość formularza w momencie, kiedy użytkownik naciśnie przycisk formularza.

<a href="javascript:void(document.form.submit())">Kliknij tutaj, aby przesłać zawartość formularza</a>

Autorzy i etykiety dokumentu

Contributors to this page: teoli, Re set, Stefan.power, Ptak82, Internauta1024A, Mgjbot, Grzybu
Ostatnia aktualizacja: teoli,