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

时间:2011-10-03 17:45:19

标签: javascript

我知道我们可以在运行时在Javascript对象中创建新属性但是该属性是否也可以赋值?例如。

var value = "New value";

var table = new Object();

var newValue = table[value];

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

table = {
value:"New Value";
}

3 个答案:

答案 0 :(得分:5)

您对分配的访问感到困惑。

// 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'];

希望澄清一些。如果我能扩展它的任何部分,请告诉我。

答案 1 :(得分:3)

没有。你的陈述

var newValue = table[value];

未设置任何内容,因为在您创建table时未指定任何属性,newValue将为undefined

如果您为value变量分配了一个值,并且您希望将该值分配给密钥value下的表格,那么您想要

table['value'] = value;

或者

table.value = value

答案 2 :(得分:1)

呃,不,我不认为你说得对。

所有这一切都是将undefined分配给newValue,因为您正在尝试访问table的“New Value”属性,该属性不存在。< / p>

我认为你要做的是:

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