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

Use variable for property name in JavaScript literal?

本文关键字:属性 变量 JavaScript 文字      更新时间:2023-09-26

我知道我们可以在运行时在Javascript对象中创建新属性,但该属性也可以分配值吗?例如,

var value = "New value";
var table = new Object();
var newValue = table[value];

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

table = {
value:"New Value";
}

你把访问和分配搞混了。

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

希望这能澄清一些。

请让我知道我是否可以扩展它的任何部分。

no。你的声明

var newValue = table[value];

没有设置任何内容,并且由于在创建table时没有分配任何属性,因此newValue将是undefined

如果你有一个value变量被赋值,并且你想把这个值赋给表下的键value,你想做

table['value'] = value;

或者

table.value = value

嗯,不,我认为你的理解不太对。

所做的就是将undefined分配给newValue,因为您试图访问table的"New Value"属性,该属性不存在。

我认为你想做的是:

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