Przewodnik po języku JavaScript 1.5:Tworzenie nowych obiektów:Zastosowanie konstruktorów funkcji
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
[edytuj] Zastosowaniem konstruktorów funkcji
Alternatywnie, możesz utworzyć obiekt w dwóch krokach:
- Zdefiniować typ obiektu poprzez napisanie konstruktora funkcji.
- Utworzyć natychmiast nowy obiekt.
Do zdefiniowania typu obiektu, tworzymy funkcję dla typu obiektu który określa nazwę, właściwości i metody. Na przykład, sądząc, że chcesz utworzyć typ obiektu dla samochodów. Chcesz ten typ obiektu nazwać car i chcesz posiadać właściwości do zrobienia make , model, year i color. Aby to zrobić, powinieneś napisać następującą funkcje:
function car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
Uwaga, użycie this pozwala wartości własności obiektów opartych na wartościach pasujących do tej funkcji.
Teraz możesz utworzyć obiekt nazwany mycar w następującym kodzie:
mycar = new car("Eagle", "Talon TSi", 1993);
Instrukcja ta tworzy mycar i dopuszcza to do określonych wartości. Potem wartość mycar.make jest łańcuchem "Eagle", mycar.year jest liczba całkowita 1993, w ten sposób(?).
Utwórz jakis numer obiektu car nazywając new. Na przykład,
kenscar = new car("Nissan", "300ZX", 1992);
vpgscar = new car("Mazda", "Miata", 1990);
obiekt posiada właściwość która sama w sobie posiada jeszcze jeden obiekt. Na przykład; przypuśćmy, że zdefiniujemy obiekt nazwany następująco person:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
i potem przypisze nowe obiekty person jako następujące:
rand = new person("Rand McKinnon", 33, "M");
ken = new person("Ken Jones", 39, "M");
Potem znów zapisz definicję car włączając własne właściwości, które pobierają obiekt person, jak następująco:
function car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner
}
Błyskawiczne nowe obiekty, następnie użyjesz:
car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken);
Uwaga, która zamiast przechodzić z wartości literału string lub integer kiedy są tworzone nowe obiekty, powyższe instrukcje dzieją się w obiektach rand i ken jako argumenty dla właściciela. Potem jeśli chcesz przekonać się do nazwy właściciela car2 , możesz zaakceptować następujące warunki:
car2.owner.name
Notuj wszystko co możesz zawsze dodać do poprzedniego zdefiniowanego obiektu. Na przykład, instrukcja
car1.color = "black"
dodawaj właściwości color do car1, i przydziel tą wartość "black." Jednakże, to nie wpływa na pozostałe obiekty. Dodaj nową właściwość do wszystkich obiektów tego samego typu, musisz mieć dodaną właściwość do definicji obiektu typu car.