代码之家  ›  专栏  ›  技术社区  ›  bobloblaw

JSONObject.item与JSONObject['item']的相对处理速度是多少?

  •  1
  • bobloblaw  · 技术社区  · 10 年前

    我正在努力加快一些旧的JavaScript代码,这些代码使用了大量以下结构:

    var obj = {
                attr1: value,
                attr2: value2,
                ...
                attrN: valueN
              };
    
    someFunction(obj['attr1']);
    

    JSHint给我以下建议:

    ['attr1'] is better written in dot notation.
    

    所以它更喜欢 obj.attr1 结束 obj['attr1'] 。我理解此警告的美学原因(解释 here ),但哪种符号更快?我认为前者会更有效,因为后者涉及字符串文本的转换,但我除了猜测之外没有其他东西可以支持。

    如果您能提供任何帮助,我们将不胜感激。

    1 回复  |  直到 10 年前
        1
  •  5
  •   markasoftware    10 年前

    他们几乎势均力敌。请参见以下两个jsperf示例:

    http://jsperf.com/dot-operator-vs-array-notation
    http://jsperf.com/dot-notation-vs-bracket-notation/2

    它们都显示它们的相似性在1%以内,然而,它们都显示数组表示法的速度稍快。

    编辑:

    浏览新创建的jsperfs,我发现了以下两个:

    http://jsperf.com/mpaaa
    http://jsperf.com/property-dot-versus-string

    它们都显示出几乎相同的结果,事实上,在多次测试后,它们显示出不同的结果(有时点更快,有时数组表示法)

    这是领带

    另一个编辑:

    浏览器表是错误的,尽管至少对我来说,它在其他浏览器中显示了一些非常不均匀的测试,我在其中一个浏览器中测试了它,结果显示了巨大的差异,结果却与我已经发现的结果相似