HighDots Forums  

Variable

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Variable in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
ksuess
 
Posts: n/a

Default Variable - 10-05-2007 , 03:03 AM






Hi!
Ich habe eine Variable und ihren Variablennamen.
var menu_netzwerk[0] = "< ...>"
var menu_netzwerk[1] = "< ...>"
var menuname = "menu_netzwerk"
Wie komme ich mit menuname an den Wert der Variablen mit dem Namen
menuname="menu_netzwerk"?
Danke und Gruss,
Katja


Reply With Quote
  #2  
Old   
J. Strübig
 
Posts: n/a

Default Re: Variable - 10-05-2007 , 04:34 AM






ksuess schrieb:
Quote:
Hi!
Ich habe eine Variable und ihren Variablennamen.
var menu_netzwerk[0] = "< ...>"
var menu_netzwerk[1] = "< ...>"
var menuname = "menu_netzwerk"
Wie komme ich mit menuname an den Wert der Variablen mit dem Namen
menuname="menu_netzwerk"?
In dem Falle, dass menu_netzwerk eine globale Variabel ist würde der
zugriff über window[menuname][x] funktionieren. Ich würde mir aber
Gedanken machen ob du nicht lieber ein Objekt als assoziatives Array
verwenden willst.

In der Art:

var mein_menu = {};
mein_menu['menu_netzwerk'] = ["< ...>", "< ...>"];
.....
var menuname = "menu_netzwerk"
alert(mein_menu['menu_netzwerk'][0]);

Struppi.


Reply With Quote
  #3  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Variable - 10-08-2007 , 03:06 PM



J. Strübig wrote:
Quote:
ksuess schrieb:
Ich habe eine Variable und ihren Variablennamen.
var menu_netzwerk[0] = "< ...>"
var menu_netzwerk[1] = "< ...>"
var menuname = "menu_netzwerk"
Wie komme ich mit menuname an den Wert der Variablen mit dem Namen
menuname="menu_netzwerk"?

In dem Falle, dass menu_netzwerk eine globale Variabel ist würde der
zugriff über window[menuname][x] funktionieren.
Das wäre jedoch bestenfalls abhängig vom Benutzerprogramm. Besser wäre daher

this[menuname][x]

im globalen Kontext. Nach

var _global = this;

im globalen Kontext ist dann im lokalen Kontext

_global[menuname][x]

möglich.

Quote:
Ich würde mir aber Gedanken machen ob du nicht lieber ein Objekt als
assoziatives Array verwenden willst.
Bitte verbreite hier keine falschen Vorstellungen und Halbwahrheiten. Es
wird in dem geposteten Code einfach ein benutzerdefiniertes Object-Objekt
erstellt und benutzt, mit er in der Sprachspezifikation (ECMAScript Ed. 3)
definierten Funktionalität, nämlich der Möglichkeit, diesem nativen Objekt
Eigenschaften hinzuzufügen[1] und auf die hinzugefügten Eigenschaften
zuzugreifen[2].

Es wird _nicht_ ein Objekt "als assoziatives Array" verwendet. Die
Sprachspezifikation (ECMAScript) und deren Implementationen (u.a. JavaScript
und JScript) kennen jedenfalls eingebaut eine solche Datenstruktur schlicht
nicht.

Quote:
In der Art:

var mein_menu = {};
mein_menu['menu_netzwerk'] = ["< ...>", "< ...>"];
^^^^^^^^^[1]
....
var menuname = "menu_netzwerk"
alert(mein_menu['menu_netzwerk'][0]);
^^^^^^^^^^^^^^^^^^^^^^^^^^^[2]


PointedEars
--
Nimm VerBrecherSCRIPT, denn das ist kein JavaScript-Objekt, wird also bei
keinem vernünftigen Browser geschweige denn auf einer vernünftigen Plattform
funktionieren, so daß Du auch [...] gleich mit VBSCRIPT arbeiten kannst und
dies auch tun solltest. --Georg Maaß, <ao3k78$ije4r$3 (AT) ID-3551 (DOT) news.dfncis.de>


Reply With Quote
  #4  
Old   
J. Strübig
 
Posts: n/a

Default Re: Variable - 10-09-2007 , 04:25 AM



Thomas 'PointedEars' Lahn schrieb:
Quote:
Es wird _nicht_ ein Objekt "als assoziatives Array" verwendet. Die
Sprachspezifikation (ECMAScript) und deren Implementationen (u.a. JavaScript
und JScript) kennen jedenfalls eingebaut eine solche Datenstruktur schlicht
nicht.
Das ist mir bekannt, habe ich auch nie behauptet.

Mir ging es lediglich darum dem OP deutlich zu machen, was er machen
kann. Das es ein AA in JS nicht gibt ist hier belanglos, da die
Eigenschaften, die ein Array assoziativ machen, durch ein Objekt
nachgebildet werden können. Es wird in so einem Fall "ein Objekt als..."
verwendet. Wenn ich behaupten wollte das es welche gibt, hätte ich
geschrieben, "verwende ein..."

Struppi.


Reply With Quote
  #5  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Variable - 10-09-2007 , 05:18 AM



J. Strübig wrote:
Quote:
Thomas 'PointedEars' Lahn schrieb:
Es wird _nicht_ ein Objekt "als assoziatives Array" verwendet. Die
Sprachspezifikation (ECMAScript) und deren Implementationen (u.a. JavaScript
und JScript) kennen jedenfalls eingebaut eine solche Datenstruktur schlicht
nicht.

Das ist mir bekannt,
Das wage ich zu bezweifeln.

Quote:
habe ich auch nie behauptet.
Die Aussage "ein (natives ECMAScript-)Objekt als assoziatives Array
benutzen" impliziert, dass es (etwas wie) assoziative Arrays in derselben
Sprache gibt.

Quote:
Mir ging es lediglich darum dem OP deutlich zu machen, was er machen
kann. Das es ein AA in JS nicht gibt ist hier belanglos, da die
Eigenschaften, die ein Array assoziativ machen, durch ein Objekt
nachgebildet werden können.
Ja, jedoch nicht built-in, sondern etwa als benutzerdefinierte oder
DOM-Collection. Wendet man beispielsweise die Definition von PHP für
assoziative Arrays auf ECMAScript-Implementationen an, so ergibt sich
mit dem eingebauten Hinzufügen einer Eigenschaft mit nichtnumerischem
Namen zu einem nativen Objekt per [[Put]] eben _nicht_ automatisch das
Hinzufügen einer Eigenschaft mit numerischem Namen zu einem Objekt,
deren Wert identisch mit dem Wert der Eigenschaft mit nichtnumerischem
Namen ist.

Quote:
Es wird in so einem Fall "ein Objekt als..." verwendet.
Nein, siehe ECMAScript Edition 3 Final, 8.7. Etwas wie die Prototypkette
gibt es bei assoziativen Arrays in anderen Programmiersprachen
beispielsweise nicht; diese ist aber für ECMAScript-Implementationen
relevant. Daraus folgt, dass selbst ein natives Objekt ohne
benutzerdefinierte Eigenschaften bereits Eigenschaften erbt, auf die auch
zugegriffen werden kann. Ein assoziatives Array jedoch, das keine Elemente
hat, ist leer und ein beliebiger Elementzugriff liefert einen von der
Sprache abhängigen Undefiniert-Wert, sofern er nicht in einem Laufzeitfehler
resultiert.

Quote:
Wenn ich behaupten wollte das es welche gibt, hätte ich
geschrieben, "verwende ein..."
Du solltest es einfach unterlassen, bloss aufgrund ähnlicher Syntax
unpassende Konzepte aus anderen Programmiersprachen in
ECMAScript-Implementationen hineinzuinterpretieren und dies Anfängern
weismachen zu wollen.


PointedEars


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.