Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dostęp do obiektu utworzonego w funkcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kazag
Cześć,

próbuję ogarnąć obiekty w JS.

Mam sobie obiekt:

Kod
function Obiekt(name, start, time) {
    this.name = name;
    this.start = start;
    this.time = time;
    this.startCounting = function() {
            window.alert(this.name+' ma '+this.start+' lat');
        }
    return this;
}


potem niżej w $(document).ready(... mam przypisaną funkcję do kliknięcia na element, która coś tam sobie robi, a na koniec tej funkcji chciałbym stworzyć nową instancję obiektu Obiekt, robię to tak:

Kod
var ob = new Obiekt('nazwa', 0, 0);


i jeśli wtedy sobie wyalertuję ob.name (w obrębie tej funkcji, która to utworzyła), to działa, alertuję mi 'nazwa', ale chciałbym mieć dostęp do tego obiektu później, również w obrębie $(document).ready, ale w innych funkcjach. Chcę mieć kilka obiektów, ob1, ob2, ob3 i na nich dokonywać operacji po kliknięciu na inne elementy DOM. Oczywiście mogę obejść się bez obiektów, tak jak zawsze, ale chciałem to zrozumieć, a chyba gdzieś zgubiłem się w podstawowych założeniach, prawda?

Przykład:

http://jsfiddle.net/WvrtZ/

jeśli w clicku na #a2 będę chciał wyalertować ob1.name, to nic nie dostanę. Chodzi tu pewnie o zasięg. Ale w jaki sposób więc mogę utworzyć po kliknięciu na linki kolejne obiekty i potem odwoływać się do nich dalej po kliknięciu na innego linka?
nospor
Czytam i czytam i nie kumam o co ci chodzi.

Zaś jeśli chodzi o zasięg zmiennych to jeśli chcesz by zmienna tworzona w funkcji miała zasięg globalny to nie:
var zm = 'cos';
a:
zm = 'cos';

i już
kazag
http://jsfiddle.net/WvrtZ/ działa smile.gif

to jest normalne użycie, czy "działa bo działa"?

Cała filozofia opiera się na tym, że na początku nie mam żadnego obiektu, po starcie aplikacji user może tworzyć obiektów ile mu się zachce, wszystkie są takie same, a potem dla każdego z nich powinien móc osobno zmieniać każdą wartość i je ewentualnie usuwać. Dlatego mam formularz do tworzenia obiektu, który tworzy mi na froncie odpowiedni kontener, w nim są opcje takie jak 'zmień wartosc' i 'usun' no i chciałbym to oprzeć właśnie o obiekty.

pzdr
nospor
To co ci napisałem to tak jest. Tak sie określa zasięg zmiennej.
var - lokalna w obrębie funkcji
bez var - globalna

Nie wiem co mam ci więcej napisać, tym bardziej że nadal nie wiem o co ci chodzi smile.gif
kazag
Pomogłeś, dzięki !
acidm
A jeszcze ładniej zrobisz jak do zmienną globalną zadeklarujesz sobie najpierw z użyciem var a później będziesz robic co chcesz z nią .
Tworzenie zmiennej bez uzycia var działa ale sypie błedami, ogólem jak chcesz tworzyc zmienną globalną tworz ja jawnie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.