【问题标题】:Difference between quoted and un-quoted JavaScript object properties [duplicate]引用和未引用的 JavaScript 对象属性之间的区别 [重复]
【发布时间】:2010-07-07 12:14:25
【问题描述】:

带引号和不带引号的 JavaScript 对象属性/方法名称有区别吗?

比如这两者有什么区别:

var obj1 = {
  property1 : "Value 1",
  method1 : function() {
    return true;
  }
};

var obj2 = {
  "property1" : "Value 1",
  "method1" : function() {
    return true;
  }
};

【问题讨论】:

    标签: javascript object


    【解决方案1】:

    JavaScript 没有区别。但是,您必须引用恰好是保留字(例如 class)或包含无效字符的名称(例如 first-name)的属性名称。

    【讨论】:

    • 所以,我认为,这实际上只是一个编码风格的问题。但是由于保留字的必要引用对 JavaScript 施加的限制,始终引用属性/方法应该更加一致。
    • @jindrichm:是的,您可以一致地引用所有属性名称,但另一方面,您也可以一致地使用作为有效变量名的属性名称。一般来说,我倾向于不引用,但我并不特别致力于任何一种风格......请注意,如果您使用的属性名称不是有效的变量名称,您将无法使用点符号来访问属性: myObject.myProperty,但您只能使用下标符号:myObject['myProperty']
    【解决方案2】:

    在 ES 3 之前,您需要引用语言的 reserved words(新、默认、类等)。然而,在新版本中,这将是不必要的。

    但是由于 ES 5 还没有得到很好的支持,你需要坚持引用所有 reserved words

    如果您不想记住完整的单词列表,最好引用所有内容。

    额外:这就是为什么元素上没有 floatclass 属性的原因。您必须改用cssFloat/styleFloatclassName

    另一个补充是您需要引用 JSON 字符串中的每个键。原因是他们希望它独立于语言,以免干扰像 ES3 中的愚蠢限制。

    【讨论】:

    • 我想你指的是 ES3,因为 ES3.1 只是 renamedES5,当 ES4被遗弃了。
    • 是的,我只是打字快,忘了检查,谢谢错字... :)
    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 2010-10-19
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    相关资源
    最近更新 更多