使用点表示法或键时JavaScript如何查找值

jam*_*upe 0 javascript foreach

我有一个大的JavaScript对象,其中包含在需要时添加和删除的属性.与此类似的东西:

var data = {

  data1: {
      subscribers : ["sub1", "sub2"]
  },

  data2: {
      subscribers : ["sub1", "sub2"]
  }

  //[0...*]

};
Run Code Online (Sandbox Code Playgroud)

我想要"data2"的订阅者,所以我data["data2"].subscribers用来访问这些信息.

但我的问题是:

  • 访问这样的属性的JavaScript内部工作原理是什么(点符号,使用属性名称)?
  • 对象的大小是否会影响订阅者数组的返回速度?

我的猜测是大小会影响接收返回数据的速度,因为我认为JavaScript访问属性的方式是在对象上使用for循环:

function getSubs(name) {
    for(var prop in data) {
        if(prop === name) {
            return data[prop].subscribers;
        }
    }
}
var subs = getSubs("data2");
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 6

不,它不能通过遍历所有属性来工作,但基本上通过在编译之前使用经常使用的哈希表模式和编译之后的类(这里有关于V8的更多内容).

实际上,这是javascript引擎内部工作的一部分,而不是规范.你需要知道的是:

是的,拥有许多房产可能会产生影响,但比你想象的要轻得多.别担心.