什么叫'干净'的map

一般声明一个map对象我们使用字面量的方法

let map = {};

我们知道,使用字面量声明的对象其实就是默认继承了Object对象,也就是说这个对象拥有Object的原型方法,比如:toString()... 这样的对象我们可不叫干净的

那么该怎么做呢?

Object.create(proto, [propertiesObject]): 这个方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 (请查看浏览器控制台以获取视觉证据。)[以上MDN的]

MDN描述说,此方法有两个参数,

  1. proto, 新创建对象的原型对象。
  2. propertiesObject, 可选。如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。

创建一个'干净'的对象,我们就要借助上面的这个方法了

let cleanMap = Object.create(null);

null是基本数据类型,是没有原型的,所以讲null作为第一个参数传入创建出来的对象就是'干净'的对象。这个对象不会继承任何。

参考文章:http://www.jstips.co/en/javas...


JameHou
595 声望10 粉丝

我只想静静地写着代码,和相爱的人平淡的过完一生