在JavaScript文字中使用变量作为属性名称?

问题描述:

我是JavaScript新手,试图用它做一些实验。我有一个问题。我知道我们可以在运行时在Javascript对象中创建新属性,但是该属性也可以赋值。例如。在JavaScript文字中使用变量作为属性名称?

var value = "New value"; 

var table = new Object(); 

var newValue = table[value]; 

现在,我知道值表有一个名为“value”的新属性。 。但这是否“值键包含的信息为”新价值”那么,这是否意味着现在的表对象是像如下:

table = { 
value:"New Value"; 
} 

感谢您的帮助提前家伙

-Vik

+2

顺便说一句,对象的文字符号'{}'是不是'新的对象()'几乎在任何可能的方式方法更好。 – hugomg

+1

console.log(table); –

+0

此外,对象字面值“{...}”内的分号(';')无效。使用逗号(',')分隔属性INSIDE对象文字。 –

你正在分配访问时感到困惑。

// Assigns a variable named 'value' with a value of 'New Value'. 
var value = "New value"; 
// Creates a variable named 'table' as a blank Object. 
var table = new Object(); // Alternatively - table = {}; 
// Attempts to access "New Value" from object "table" which returns undefined. 
var newValue = table[value]; 

如果你想分配属性你这样做这样一个对象:

// Assumes table is still an object. 
table['key'] = 'value'; 

// Note that I almost _always_ opt for the variable['key'] notation over 
// the variable.key notation because it allows you to use keys 
// that would otherwise not be valid as identifiers. 
table['Some Key'] = 'Some Value'; // This works. 
table.Some Key = 'Some Value'; // This does not. 

后来,当要检索该值,并将其存储在一个新的变量,那就是当你做这个:

var newVariable = table['key']; 

希望澄清一些。请让我知道我是否可以扩展它的任何部分。

没有。您的发言

var newValue = table[value];

当您创建不是在时间设置任何东西,因为您未分配任何财产,newValue将为undefined

如果您有分配一个值value变量,你要下的关键value分配一个值表,你想要做

table['value'] = value;

或可替代

table.value = value

呃,不,我认为你说的没错。

只要将undefined指定为newValue即可,因为您试图访问table的“New Value”属性,该属性不存在。

我认为你要做到这一点是:

var value = "New value"; 
var table = {}; 
table.value = value;