在JavaScript文字中使用变量作为属性名称?
问题描述:
我是JavaScript新手,试图用它做一些实验。我有一个问题。我知道我们可以在运行时在Javascript对象中创建新属性,但是该属性也可以赋值。例如。在JavaScript文字中使用变量作为属性名称?
var value = "New value";
var table = new Object();
var newValue = table[value];
现在,我知道值表有一个名为“value”的新属性。 。但这是否“值键包含的信息为”新价值”那么,这是否意味着现在的表对象是像如下:
table = {
value:"New Value";
}
感谢您的帮助提前家伙
-Vik
答
你正在分配访问时感到困惑。
// 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;
顺便说一句,对象的文字符号'{}'是不是'新的对象()'几乎在任何可能的方式方法更好。 – hugomg
console.log(table); –
此外,对象字面值“{...}”内的分号(';')无效。使用逗号(',')分隔属性INSIDE对象文字。 –