【问题标题】:Are there other ways to get an object property in javascript? [duplicate]还有其他方法可以在 javascript 中获取对象属性吗? [复制]
【发布时间】:2014-10-24 02:00:48
【问题描述】:

这是一个非常奇怪的错误,我无法弄清楚它为什么会发生。

我有一个 dataLayer 数组,里面有对象。

dataLayer[3]
Object {event: "gerar-evento", event-category: "Chat", event-acion: "Vendas", event-label: "Pré Fixo 15"}

当我尝试选择这个对象的一个​​属性时,我得到一个错误

如果我尝试:

dataLayer[3].event //gerar-evento

效果很好。

但如果我尝试:

dataLayer[3].event-label // ReferenceError: label is not defined

我收到此错误:ReferenceError: label is not defined

还有其他方法可以从对象中选择属性吗?我做错了什么?

【问题讨论】:

    标签: javascript object


    【解决方案1】:

    您需要使用bracket notation,因为event-label 不是有效标识符

    dataLayer[3]['event-label']
    

    【讨论】:

    • 如果不清楚为什么event-label 不是一个有效的标识符:它是一个表达式,它从一个名为event 的变量中减去一个名为label 的变量。
    【解决方案2】:

    在 JavaScript 中,您有两种获取对象属性的方法:

    1. 点表示法:object.property

    2. 括号表示法:object['property-with-dash'] 这是您必须在您的情况下使用的一种:

      dataLayer[3]['事件类别']

    同样使用方括号表示法,您可以使用变量从对象中获取属性,例如:

     var eventName = 'event-category';
     dataLayer[3][eventName]
    

    会给你同样的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2016-03-25
      • 2020-11-20
      • 2011-06-04
      • 1970-01-01
      • 2012-10-08
      • 2011-10-19
      • 2012-07-07
      相关资源
      最近更新 更多