Javascript嵌套对象访问速度

Javascript嵌套对象访问速度,javascript,Javascript,我一直在努力理解为什么访问嵌套对象更快 这里我们有一个小的基准 var nested1 = {level1: null}; var nested2 = {level1: {level2: null}}; var nested3 = {level1: {level2: {level3: null}}}; var nested4 = {level1: {level2: {level3: {level4: null}}}}; 定义测试对象后,我们对访问结果进行基准测试 nested1

我一直在努力理解为什么访问嵌套对象更快

这里我们有一个小的基准

  var nested1 = {level1: null};
  var nested2 = {level1: {level2: null}};
  var nested3 = {level1: {level2: {level3: null}}};
  var nested4 = {level1: {level2: {level3: {level4: null}}}};
定义测试对象后,我们对访问结果进行基准测试

nested1.level1;
速度比以前慢14%

nested4.level1.level2.level3.level4;
但这怎么可能呢? 这是你的电话号码


这个问题与缓存深度嵌套的变量无关。我只是想了解是什么让深度引用在某些浏览器上更快。

似乎它缓存了父对象我看到最快(1,3,4)和最慢(2)之间有0.06%的差异-可能依赖于浏览器-可能chrome sux:pI在IE11上运行了该测试,
nested1
nested4
堆快。似乎这取决于js引擎和内部构件。Chrome在1和4之间有巨大的差异。这一定是有原因的。我不想说Chrome sux,但不想说IE:)我的猜测是,这只适用于长链,而不适用于单个属性访问(这不会有太大区别)。似乎它缓存了父对象。我看到最快(1,3,4)和最慢(2)之间有0.06%的差异-可能依赖于浏览器-可能chrome sux:pI在IE11上运行了该测试,
nested1
的堆速度比
nested4
快。似乎这取决于js引擎和内部构件。Chrome在1和4之间有巨大的差异。这一定是有原因的。我不想说Chrome sux,但不想说IE:)我的猜测是,这只适用于长链,而不适用于单一属性访问(在这方面没有多大区别)。