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

3

我知道我们可以在JavaScript对象的运行时创建新属性,但是这个属性能赋值吗?例如:

var value = "New value";

var table = new Object();

var newValue = table[value];

现在,我知道值表格有一个叫做"value"的新属性。但是这个"value"键是否包含了"New Value"的信息呢?那么,这是否意味着现在表格对象像下面这样:

table = {
value:"New Value";
}

2
顺便提一下,对象字面量表示法 {} 在几乎任何情况下都比 new Object() 更好。 - hugomg
此外,在对象字面量 { ... } 中使用分号 (;) 是无效的。请使用逗号 (,) 来分隔对象字面量内的属性。 - Rob W
3个回答

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

希望这能够澄清一些问题。如果需要进一步解释,请告诉我哪个部分需要。

3

不是这样的。你的代码:

var newValue = table[value];

并没有设置任何东西,因为在创建 table 的时候你没有分配任何属性,所以 newValue 将会是 undefined

如果你有一个被赋值的变量 value,并且你想将该值分配给键为 value 的表格,你应该这样做:

table['value'] = value;

或者使用另一种方式:

table.value = value


1

额,不,我认为你还没有完全理解它。

所有这样做的只是将undefined分配给newValue,因为你试图访问table的“New Value”属性,但该属性不存在。

我认为你想做的是这样的:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接