Javascript我应该存储对嵌套对象的引用还是直接使用它?

Javascript我应该存储对嵌套对象的引用还是直接使用它?,javascript,reference,Javascript,Reference,我假设,如果您使用其中任何一种,这几乎不会对性能产生影响,但我想知道使用其中一种是否更好 鉴于我有: var a = { b: {c: { d: ... }}}; var ref = a.b.c.d; 我应该直接使用a.b.c.d还是创建并使用一个名为“ref”的引用 此外,如果有一个getter函数返回一个复杂程度不同的对象: var a = { b: {c: { d: ... }}}; function getObject() { return

我假设,如果您使用其中任何一种,这几乎不会对性能产生影响,但我想知道使用其中一种是否更好

鉴于我有:

    var a = { b: {c: { d: ... }}};
    var ref = a.b.c.d;
我应该直接使用a.b.c.d还是创建并使用一个名为“ref”的引用

此外,如果有一个getter函数返回一个复杂程度不同的对象:

    var a = { b: {c: { d: ... }}};
    function getObject() {
      return a;
    }
    var ref = getObject();
getObject().b.c.d和ref之间有区别吗


我知道这没那么重要,但我的强迫症不允许我让它停止D

这样的财产访问有(微小的)开销。
使用
ref
变量直接访问
d
会更快

现在的问题是:什么时候属性访问开销大于声明新变量的开销?
最后,选择你最喜欢的。两者都不会导致明显的性能差异

Javascript我应该存储对嵌套对象的引用还是直接使用它

这几乎完全取决于具体情况。一般来说,编写任何最清晰的代码,而不是担心效率,直到/除非您面临需要解决的性能问题

这是您的第一个片段: 访问对象上的属性需要非零时间,但在现代浏览器上非常高效。因此,使用
ref
而不是
a.b.c.d
会更快,但在您编写的任何代码中,这都不太重要,除非您在一个紧密的循环中连续执行数十万次。当你这样做的时候,请担心这一点

另一个要考虑的是,其他代码是否可以修改<代码> < <代码> >或<代码> b>代码>,或<代码> c>代码>,从而<代码> REF= = .A.B.C.D./COD>不再是真的。如果希望代码看到这些更改,请不要使用

ref
。如果您希望保护它不受此类更改的影响,请使用
ref
,即使
ref
可能已过时

这是你的第二个片段:
有一个很大的区别:如果使用
ref
,那么以后就不会调用
getObject
。如果您知道要继续使用最初返回给您的对象
getObject
,和/或要避免重复调用的开销,请使用
ref
。但想必
getObject
的存在是有原因的,因此在某些情况下再次使用
getObject
可能更有意义。根据具体情况的不同,这两个代码片段有不同的用途,但它们做的是相同的事情。如果您不需要
getObject()
,那么为什么要首先创建它呢?这样的属性访问有(很小的)开销。直接访问
d
会更快。现在的问题是:什么时候开销大于声明新变量的开销?最后,选择你最喜欢的。两者都不会导致明显的性能差异。纳秒并不重要。如果有问题,写汇编。@JonasW:这个问题是iPhone特有的。@JonasW::或者找一个专门讨论这个问题的人。