2016-06-14 18 views
0

Wie kann ich JavaScript-Objekte erstellen, die dynamisch "benannt" sind?Dynamisch benannte JavaScript-Objekte erstellen?

Hier ist eine nicht arbeiten Beispiel dafür, was ich versuche zu tun, ist die Frage mit:

"objVarName = " 

JSFIDDLE DEMO

JavaScript [CODE]:

function CustomObj(pName, pAge, pColor) { 
     this.name = pName, 
     this.age = pAge, 
     this.color = pColor 
    } 

    function createNewObj (objVarName, pName, pAge, pColor){ 
     objVarName = new CustomObj(pName, pAge, pColor); 
    } 

    createNewObj("theFirstVarName", "Car", 10, "red"); 

    alert(theFirstVarName.name); // if working should alert "Car" 
+2

Entweder es Teil eines Objekts machen (mit einer eigenen von "Fenster", wenn Sie es global haben möchten, sonst 'eval'. Es gibt ein sehr starkes [XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) Geruch in Ihrer Frage. –

+0

Warum denken Sie, dass Sie das tun müssen? Wie ist das besser als das Objekt zurückzugeben? 'var theFirstVarName = createNewObj (" Car ", 10," rot ")' –

+2

Dynamisch benannte Globals sind eine schreckliche Idee. – Quentin

Antwort

2

Sie können dies tun, indem Sie eine Zeile zu ändern, aber ich bin mir nicht sicher, warum diese wünschen würde:

objVarName = new CustomObj(pName, pAge, pColor); 

zu:

window[objVarName] = new CustomObj(pName, pAge, pColor); 
+1

Manchmal ist die beste Hilfe, die man jemandem geben kann, * ihm * nicht zu zeigen, wie man das macht, was man denkt. –

+1

Aber wo hörst du auf? Sicherlich können wir uns seinen Code anschauen und auf mehr als ein Problem hinweisen und wir können alles komplett neu gestalten. Selbst wenn es perfekt ist, könnten wir das immer noch tun. Er hat eine spezifische Frage gestellt, also ist eine spezifische Antwort das, was erwartet wird. Wenn diese Strategie später nicht sehr gut zu funktionieren scheint, können wir sicher eine neue Frage erwarten ;-) –

+1

Wahrscheinlich aufhören, bevor wir Lösungen geben, die eigentlich in den meisten Fällen nicht verwendet werden sollten. Anfänger (einschließlich zukünftiger Leser) neigen dazu, die erste Lösung zu verwenden, die scheinbar "funktioniert" und am Ende damit beginnt, schlechten Code für lange Zeit zu schreiben. Eine richtige Antwort ist nicht unbedingt eine gute Antwort. –