2011-07-07 9 views
2

同じ変数名を使用して変数を含むオブジェクトを作成するにはどうすればいいですか。言い換えれば、変数を名前空間に配置するにはどうすればよいですか?変数を名前空間に入れる

var a = "variable"; 
var b = "variable"; 

var obj = { 
    a : a 
    b : b 
} 

これより短い方法がありますか?

EDIT:

私は明確にしましょう - 私はすでに、変数aとbがどこかに宣言しています。最終的には、ある時点でそれらをすべて別の関数に送信したいと思いますが、すべての変数を1つの名前空間objにしたいとします。代わりに、同じ変数名と同じ変数値(変数自体)を使用して、面倒な再宣言ごとに単一の変数を行うのだから私は多分簡単な方法があったと思った:すでに構築似た何かがあった場合

var obj = objectify(a, b); 

ように私は疑問に思いましたjavascriptライブラリに追加します。レイアウトのため申し訳ありませんが、WYSIWYGエディタを使用すると、実際にオブジェクト内の変数を入れていないとして、私はここに

+0

オブジェクトのプロパティとして直接宣言するだけです。 –

+1

確かに、最初の場所で名前のスペーシングのポイントを否定することをやっていますか? – limptwiglet

答えて

0
var a = "variable"; 
var b = "variable"; 
var obj = {}; 
obj[a] = a; 
obj[b] = b; 

コンテンツを同じ名前のプロパティにコピーする場合は、変数を作成する必要はありません。

var obj = { 
    a: "variable", 
    b: "variable" 
}; 

必要なプロパティとオブジェクト宣言後のセミコロンの間のカンマに注意してください。これはお勧めです。

また、空のオブジェクトを作成し、後でそれにプロパティを追加することができます(またはあなたが好きな任意の組み合わせ):唯一の方法はにあるよう

var obj = {}; 
obj.a = "variable"; 
obj.b = "variable"; 
+0

私はOPが名前のように変数の* value *を使用したいとは思わない... –

+0

4つのスペースでインデントコードを... –

+0

@Felix Kling、編集していただきありがとうございます。しかし、なぜエディタにボタンやプレビューがないのですか? – pltvs

0
var obj = { 
    a: "variable", 
    b: "variable" 
}; 

をしていないだけ

1

をあなたの要求を誤解することができる任意のタブ(

0

は、JavaScriptの現在のバージョンには、名前空間はありませんこれらの変数をオブジェクトに入れてください。これはあなたが行ったことです。それは短いではないですが、あなたはまた、オブジェクトを作成し、それに変数を割り当てることができます。

var x = {}; 
x.foo = "foo"; 
0

あなたは有効に名前空間オブジェクトに既存変数を置くことはできません。特に

、あなたが持っている場合:

var a = 1; 
var b = "test"; 
var c = { ... }; // some object 

var NS = { 
    a: a, 
    b: b, 
    c: c 
}; 

NSオブジェクト内のエントリは、原稿のコピーあるので、次に、aまたはbに変更NS.aまたはNS.bには影響しませんし、その逆。 cオブジェクトに参照あるので

しかしながらcコンテンツへの変更は、NS.c(およびその逆)に影響を与えるであろう。

しかし、それ以降は、NS.cに保存されている参照がそのリンクを切断します。