Deklaration globaler Variablen, besser als Object?

latitude

Mitglied
Hi,

bin recht neu in JS. in meinem Script brauche ich ein paar "globale" Variablen. Nun stellt sich mir die Frage, welche Deklarationsmethode besser ist:


Variante 1:
Normale Deklaration:
Code:
var a, b, c;

Variante 2 als Objekt:
Object Deklaration:
Code:
var settings = { a : wert, b : wert, c : null}

Welche Variante ist z.B. aus Speichersicht, Performance etc. günstiger?

Danke Euch!
 
Ganz eindeutig die erste. Das sind nur drei Variablen. Der zweite Ansatz ist ein ganzes Objekt mit hunderten Eigenschaften.

Aber: Das ist völlig egal. Du wirst niemals einen Unterschied zwischen beiden Messen können.
 
Ganz eindeutig die erste. Das sind nur drei Variablen. Der zweite Ansatz ist ein ganzes Objekt mit hunderten Eigenschaften.

Aber: Das ist völlig egal. Du wirst niemals einen Unterschied zwischen beiden Messen können.

Da würde ich widersprechen, ganz eindeutig Variante2.(CPoly, Variante 1 definiert 3 globals während Variante2 nur 1 definiert) Der Unterschied zwischen beiden ist ganz eindeutig, je weniger globale Variablen, umsobesser, denn jede globale Variable ist ein potentieller Namenskonflikt.

Daher ist es absolut vorzuziehen bei eigenem Skripting, ein globales Objekt zu definieren und dort sämtliche eigenen Sachen(Variablen, Methoden,Funktionen) zu Lagern.

Schaut euch google an, die meisten APIs werden in einem globalen Namespace verwaltet google .

Man nutzt Maps: erreichbar über google.maps . Man will jetzt noch Feeds dazu? google.feeds .

Denn: vorausgesetzt, man verwendet externe Anbieter(was ja nicht unüblich ist), weiss man nie, was für globale Objekte sie speichern. In Beispiel 1 hat man 3 Problemfälle: a,b und c . In Beispiel 2 immer nur 1, settings, egal was man nun in settings speichert.
 
Wir sollten mal folgendes festhalten: Es handelt sich hierbei nicht um globale Variablen.

Du redest jetzt von "Namespacing". Das hat hiermit meiner Meinung nach nichts zu tun. Du kannst deinen Code in den Namespace "google" stecken, aber die Variablen innerhalb (die für diesen Namespace "global" sind) wird man trotzdem nicht ständig auf weitere Objekte verteilen.
 
Du redest jetzt von "Namespacing". Das hat hiermit meiner Meinung nach nichts zu tun

Ich glaube dir ist klar, wovon ich rede, wie würdest du es nennen?

Es handelt sich hierbei nicht um globale Variablen
aber sicher doch:
in meinem Script brauche ich ein paar "globale" Variablen

er will auf b zugreifen:
  • Variante 1: gut, solange niemand anders eine globale Variable b definiert.
  • Variante 2: er greift auf window.settings.b zu . Wenn jemand anders eine globale Variable settings definiert, muss er nur settings umbenennen.

aber die Variablen innerhalb (die für diesen Namespace "global" sind) wird man trotzdem nicht ständig auf weitere Objekte verteilen.

brauch man auch nicht, sie sind ja nicht "private", man kann jederzeit jederorts darauf zugreifen.
 
Hallo,

vielen Dank für Eure Antworten.

Verstehe, generell ist ein obj daten / speicherintensiver. Denke ich werde zur Methode mit Objects greifen.

Sagt mal, Variablen in sog. valueObjects wie bei Flex auszulagern macht wenig Sinn, oder?
 
@wollmaus Ich dachte ihm geht es um Performance und ich wäre jetzt nicht darauf gekommen hier Namespacing mit ins Spiel zu bringen.

@latitude valueObjects sagen mir nichts. Aber ich glaube du machst dir viel zu viele Gedanken über Feinheiten. Wie man seine Variablen deklariert wird nicht die Performance der Anwendung beeinflussen. Eher Dinge wie Latenz oder DOM Manipulation
 

Neue Beiträge

Zurück