• CondorHero
    2022-11-04 来自北京
    能加餐讲讲 Map 和 Set 存储和操作数据为什么比 对象和数组高效吗。

    作者回复: 我们拿object vs. map 为例,几个肉眼可见的原因是:1. 对象只允许键是字符串或符号,如果是其它类型,就会被转化成字符串。2. 继承不必要的属性,var hashMap = {} 会继承很多map不需要的属性 3. 缺少一些需要的属性比如获取大小等。除此之外通过性能测试也可以看到性能差异。

    
    2
  • hsiang271828
    2022-10-26 来自北京
    若创建了一个js对象,如何找到它对应的内存地址呢?

    作者回复: 举个例子,按照文中讲的,你可以1. 在开发者工具的console tab输入下面代码,2. 然后到 memory tab 点击 take snapshot 3. 搜索NumItem就可以找到相关对象@符号后面的地址。 function NumItem(x) { this.x = x; } function generateNum() { var result = new Array(20); for (var i = 0, l = result.length; i < l; i++) { result[i] = new NumItem(i); } return new NumItem(result); } generateNum();

    
    1
  • 安安安
    2023-02-22 来自北京
    对象的映射关系是通过字典来存储的,这句话我认为并不是很准确。 通过V8文章https://v8.dev/blog/fast-properties 中的说法,对象属性分为快属性和慢属性。在快属性情况下是通过隐藏类(Hidden Class)上的描述符数组(descriptor array)来找到属性在内存中的地址。慢属性才使用了字典。
    
    2