资讯专栏INFORMATION COLUMN

如果你仅仅是想要用对象保存数据,请用Object.create(null),而不是对象字面量

NusterCache / 1049人阅读

摘要:当你想用对象作为一个映射完全用来储存数据,你应该按如下方式来创建它。当创建一个映射使用对象字面量时默认情况下,这个映射从这个对象继承属性。但是通过我们明确指定作为它的属性。标注如果你仅仅是想要用对象保存数据,建议这种方式

当你想用javascript对象作为一个hash映射(完全用来储存数据),你应该按如下方式来创建它。
const map = Object.create(null); 
当创建一个映射使用对象字面量时(const map = {}),默认情况下,这个映射从这个对象继承属性。这和 Object.creatd(Object.prototype)创建时相等的。

但是通过 Object.create(null),我们明确指定 null 作为它的属性。因此它相当于没有属相,甚至没有constructor, toString, hasOwnProperty等方法。因此你可以随意使用这些键值在你的数据结构中,只要你需要。

const dirtyMap = {};
const cleanMap = Object.create(null);

dirtyMap.constructor    // function Object() { [native code] }

cleanMap.constructor    // undefined

// Iterating maps

const key;
for(key in dirtyMap){
  if (dirtyMap.hasOwnProperty(key)) {   // Check to avoid iterating over inherited properties.
    console.log(key + " -> " + dirtyMap[key]);
  }
}

for(key in cleanMap){
  console.log(key + " -> " + cleanMap[key]);    // No need to add extra checks, as the object will always be clean
}

标注:如果你仅仅是想要用对象保存数据,建议这种方式:

const map = Object.create(null)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95619.html

相关文章

  • 关于原生js的一些研究

    摘要:这个属性本身又是一个类型的对象,原型对象都包含一个指向构造函数的指针,而每一个实例也都包含一个指向原型对象内部的指针。 前阵子忙于准备CET-6,没时间更新文章,之后大概一个月将忙于准备期末考,也应该不会更新了,今天趁周末有时间再更新一篇最近研究的一些东西吧。 callee和caller function inner(){ console.log(arguments.calle...

    wind3110991 评论0 收藏0
  • 《JavaScript语言精粹》内容精选

    摘要:最近在读语言精粹这本书,作者是是一名来自的资深架构师,以创建和维护格式而为大家所熟知。三元运算符有三个运算数。尝试从的成员属性中取值将会导致异常。这个过程称为委托。通过可取得它们所属对象的上下文的方法称为公共方法。 最近在读《JavaScript语言精粹》这本书,作者是 Douglas Crockford;Douglas Crockford是一名来自 Yahoo!的资深JavaScri...

    SimonMa 评论0 收藏0
  • JavaScript中真正的哈希映射(译)

    摘要:然而,对象字面量不是真正意义上的哈希映射,如果使用不当可能会构成潜在的隐患。空对象创建一个真正的哈希映射的秘诀就是避免原型,及其带来的包袱。在此之前,甚至之后,你应该使用空对象满足你所有的基本哈希映射需求。 在JavaScript中存储键值对的一个简单常见的方法是使用对象字面量。然而,对象字面量不是真正意义上的哈希映射,如果使用不当可能会构成潜在的隐患。虽然目前JavaScrip...

    DTeam 评论0 收藏0
  • JS 对象

    摘要:的简单数据类型包括数字字符串布尔值值和值。数字字符串和布尔值貌似貌似对象,因为他们拥有放飞,但他们是不可变的。对象字面量对象字面量提供一种非常方便创建新对象值的表示法。所有通过对象字面量创建的对象都连接到它是中的标配对象。 javascript 的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值貌似貌似对象,因为他们拥有...

    LucasTwilight 评论0 收藏0

发表评论

0条评论

NusterCache

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<