2011-07-07 32 views
2

如何創建一個包含我的變量的對象,使用相同的變量名或其他詞,我如何將變量放在命名空間下?把我的變量放在命名空間下

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

var obj = { 
    a : a 
    b : b 
} 

有沒有比這更簡單的方法呢?

編輯:

讓我澄清一下 - 我已經有變量a和b聲明的地方。最後,我希望將它們全部發送給另一個函數,但我希望所有變量都在一個名稱空間下 - obj。因此,而不是使用相同的變量名和相同的變量值做了繁瑣的重新聲明每一個變量(變量本身)的我想也許有一種簡便方法:像

var obj = objectify(a, b); 

,如果有類似的事情已經建立我想知道到JavaScript庫中。

+0

只能將它們直接聲明爲對象的屬性。 –

+1

當然,通過做你在做什麼你首先否定名稱間距點? – limptwiglet

回答

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

對不起佈局,但所見即所得的編輯器不具有任何標籤(

+0

我不認爲OP要使用變量的*值*作爲名稱... –

+0

只需按4個空格縮進代碼... –

+0

@Felix Kling,感謝您的編輯。但爲什麼編輯器沒有任何按鈕和預覽? – pltvs

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

我可能誤解這裏

1

當你實際上是不把這些變量中的對象,但只有你的要求將其內容複製到具有相同名稱的屬性中,則根本不需要創建變量:

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

請注意需要的屬性之間的逗號和建議的對象聲明後的分號。

您還可以創建一個空的對象,事後屬性添加到它(或你喜歡的任意組合):

var obj = {}; 
obj.a = "variable"; 
obj.b = "variable"; 
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 
}; 

然後更改爲ab不會影響NS.aNS.b,反之亦然,因爲在NS對象的條目是副本原件

然而更改內容的c會影響NS.c(反之亦然)時,由於c參考的一個對象。

但是,您隨後做的任何事情都會改變存儲在NS.c中的引用將會中斷該鏈接。