2013-01-15 110 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' 
};