2016-06-14 8 views
0

動的に名前が付けられたjavascriptオブジェクトを作成するにはどうすればよいですか?ここで 動的に名前が付けられたjavascriptオブジェクトを作成しますか?

がある 非私が何をしようとしているの例を働いて、問題がである:

"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

のどちらか(そのオブジェクトの一部を独自のものを作ります'window'をグローバルにしたい場合)、そうでない場合は' eval'です。あなたの質問には非常に強い[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の匂いがあります。 –

+0

なぜあなたはこれを行う必要があると思いますか?どのようにオブジェクトを返すよりも良いですか? 'var theFirstVarName = createNewObj(" Car "、10、" red ")' –

+2

動的に名前が付けられたグローバルはひどい考えです。 – Quentin

答えて

2

あなたは1行を変更することで、これを行うことができますが、私はあなたがこれをしたいと思う理由はわからない:

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

へ:

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

時には、あなたが誰かに与えることができる最も良い助けは、彼らが彼らがする必要があると思うようにする方法を彼らに示さないことです。 –

+1

しかしどこで止めますか?確かに彼のコードを見て、複数の問題を指摘し、すべてを完全に再設計することができます。それが完璧なときでさえ、私たちはまだそれを行うことができます。彼は特定の質問をしたので、具体的な答えは期待されるものです。この戦略が後でうまく機能しないようであれば、私は新しい質問を期待できると確信しています;-) –

+1

ほとんどの場合、実際には使用しないでください。初心者(将来の読者を含む)は、「うまくいく」と思われる最初のソリューションを使用する傾向があり、そのために長いコードを書くことになります。正解は必ずしも良い答えではありません。 –

関連する問題