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
.