2013-01-15 114 views
1

是否有可能在對象聲明中聲明JavaScript中的變量?我在尋找類似的東西,以JavaScript:在對象聲明中聲明變量

var myObject = { 
    myLabel: (var myVariable) 
}; 

,而不必寫

var myVariable; 
var myObject = { 
    myLabel: myVariable 
}; 

編輯

我想這Node.js的背景下這是我的:

var server = {}; 
var database = {}; 
var moar = {}; 

module.exports = { 
    server: server, 
    database: databse, 
    moar: moar 
}; 

doStuffAsync(function callback() { 
    // Populate variables 
    server = stuff(); 
    database = stuff2(); 
}); 
+4

你爲什麼要這樣做? –

+2

任何原因爲什麼? – Mahbub

+1

myObject.myLabel無論如何都是未定義的,就像myObject.yourLabel一樣,那有什麼意義呢? – danronmoon

回答

5

如果你想範圍的對象,你可以使用IIFE內部變量(立即調用函數表達式)

var myObject = { 
    a_variable_proxy : (function(){ 
     var myvariable = 'hello'; 
     return myvariable; 
    })() 
}; 
+2

應該是'a_variable_proxy:(function(){var myvariable; return myvariable})()'否則它是一個語法錯誤 –

+0

需要刪除分號:) – codingbiz

+3

也許這就是OP正在尋找的東西。但從技術上講,這個變量並不像你所說的那樣只是對象的範圍,而是IIFE的範圍。 – bfavaretto

1

您可以直接給鍵分配一個值。

如果你現在有:

var myVariable = 'some value'; 
var myObject = { 
    myLabel: myVariable 
}; 

,你可以將其替換爲:

var myObject = { 
    myLabel: 'some value' 
};