摘要:当你想用对象作为一个映射完全用来储存数据,你应该按如下方式来创建它。当创建一个映射使用对象字面量时默认情况下,这个映射从这个对象继承属性。但是通过我们明确指定作为它的属性。标注如果你仅仅是想要用对象保存数据,建议这种方式
当你想用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
摘要:这个属性本身又是一个类型的对象,原型对象都包含一个指向构造函数的指针,而每一个实例也都包含一个指向原型对象内部的指针。 前阵子忙于准备CET-6,没时间更新文章,之后大概一个月将忙于准备期末考,也应该不会更新了,今天趁周末有时间再更新一篇最近研究的一些东西吧。 callee和caller function inner(){ console.log(arguments.calle...
摘要:最近在读语言精粹这本书,作者是是一名来自的资深架构师,以创建和维护格式而为大家所熟知。三元运算符有三个运算数。尝试从的成员属性中取值将会导致异常。这个过程称为委托。通过可取得它们所属对象的上下文的方法称为公共方法。 最近在读《JavaScript语言精粹》这本书,作者是 Douglas Crockford;Douglas Crockford是一名来自 Yahoo!的资深JavaScri...
摘要:然而,对象字面量不是真正意义上的哈希映射,如果使用不当可能会构成潜在的隐患。空对象创建一个真正的哈希映射的秘诀就是避免原型,及其带来的包袱。在此之前,甚至之后,你应该使用空对象满足你所有的基本哈希映射需求。 在JavaScript中存储键值对的一个简单常见的方法是使用对象字面量。然而,对象字面量不是真正意义上的哈希映射,如果使用不当可能会构成潜在的隐患。虽然目前JavaScrip...
摘要:的简单数据类型包括数字字符串布尔值值和值。数字字符串和布尔值貌似貌似对象,因为他们拥有放飞,但他们是不可变的。对象字面量对象字面量提供一种非常方便创建新对象值的表示法。所有通过对象字面量创建的对象都连接到它是中的标配对象。 javascript 的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值貌似貌似对象,因为他们拥有...
阅读 1003·2021-11-23 09:51
阅读 2312·2021-10-08 10:22
阅读 2493·2021-09-29 09:35
阅读 834·2021-09-22 15:20
阅读 2835·2019-08-30 15:53
阅读 2398·2019-08-30 13:55
阅读 1067·2019-08-29 17:27
阅读 2853·2019-08-29 17:26