JavaScript: Stringwert als Object

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

JavaScript: Stringwert als Object

Beitrag von Kmitska » So Apr 14, 2013 5:46 pm

Hallo Leute,

ich möchte einer Funktion einen Parameter übermitteln, den ich dann als Klassenname verwenden möchte.
Im Internet steht, dass man das mit window[]() machen kann, doch bei mir klappt das nicht.
So schaut die Funktion aus.

Code: Alles auswählen

var setTemplate = function( templatename ) {
	self.currentTemplate(templatename);
	self.currentData( window[templatename] );
};
die Funktion wird so aufgerufen:

Code: Alles auswählen

setTemplate( "templateLogin" );
D.h. ich möchte eigentlich self.currentData( templateLogin() ); stehen haben.

hoffentlich wisst ihr, wie man das sonst noch machen kann.

Kmitska

Benutzeravatar
bbbl
Beiträge: 80
Registriert: So Jul 19, 2009 12:04 am

Re: JavaScript: Stringwert als Object

Beitrag von bbbl » So Apr 14, 2013 8:18 pm

In Javascript gibt es zwei Schreibweisen um auf die Objekt-Eigenschaften zuzugreifen: dot notation und bracket notation. Mit dem window-Objekt hat das erstmal nichts zu tun. Siehe auch: http://www.ecma-international.org/ecma- ... sec-11.2.1

Kleines Beispiel:

Code: Alles auswählen

document.getElementById === document['getElementById'] //true
Natürlich kann der String bei der bracket notation auch dynamisch sein, und aus einer Variablen stammen:

Code: Alles auswählen

var funcName = 'getElementById';
document.getElementById === document[funcName] //true
Edit:

Hab mal wieder nicht richtig gelesen.. :geek:

Code: Alles auswählen

self.currentData( window[templatename] );
Sofern die Funktion templateLogin() im globalen Namensraum definiert ist, sollte das so gehen. Allerdings führst du die Funktion beim übergeben nicht aus. Da müsste dann noch () hinten dran:

Code: Alles auswählen

self.currentData( window[templatename]() );

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: JavaScript: Stringwert als Object

Beitrag von Kmitska » Mo Apr 15, 2013 7:50 pm

self.currentData( window[templatename]() );
Habe das auch so aber bekomme immernoch eine Fehlermeldung:

Code: Alles auswählen

TypeError: window[templatename] is not a function
und wie gesagt, wenn ich das selber so eintippe

Code: Alles auswählen

 irgendwas()
funktioniert alles.

Antworten