【问题标题】:Use variable for property name in JavaScript literal?在 JavaScript 文字中使用变量作为属性名称?
【发布时间】:2011-11-30 02:52:49
【问题描述】:

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

var value = "New value";

var table = new Object();

var newValue = table[value];

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

table = {
value:"New Value";
}

【问题讨论】:

  • 顺便说一句,对象文字符号{} 几乎在任何可能的方面都比new Object() 好。
  • 此外,对象文字 { ... } 中的分号 (;) 无效。使用逗号 (,) 分隔对象字面量内的属性。

标签: javascript


【解决方案1】:

您将访问与分配混淆了。

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

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

【讨论】:

    【解决方案2】:

    没有。你的陈述

    var newValue = table[value];

    没有设置任何东西,因为在您创建 table 时您没有分配任何属性,newValue 将是 undefined

    如果您有一个分配了值的 value 变量,并且您想将该值分配给键 value 下的表,您想这样做

    table['value'] = value;

    或者

    table.value = value

    【讨论】:

      【解决方案3】:

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

      所做的只是将undefined 分配给newValue,因为您正在尝试访问table 的“New Value”属性,该属性不存在。

      我认为你正在尝试做的是:

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

      【讨论】:

        猜你喜欢
        • 2012-06-18
        • 1970-01-01
        • 2013-06-19
        • 2010-10-16
        • 1970-01-01
        • 2013-01-07
        相关资源
        最近更新 更多