JS创建一个干净空对象的正确做法

1,242 阅读1分钟

如果让大家创建一个空对象,大家第一反应会怎么做?

const obj = {};

这是最常见的创建对象的做法,这样有问题吗?其实没有,毕竟大部分的业务代码中这种写法已经被执行了成千上万次了,经得起市场的验证。可是如果我让大家用另一种方式创建一个空对象,大家又会想到怎样的写法呢?

const obj = new Object();

上面的写法其实跟第一种写法没有本质区别。他们都是从原生对象Object中创建一个子实列。既然是由Object创建出来的实列,当然会用Object本身的属性,如toString、hasOwnProperty等。可是回头想想,在业务中我们创建空对象的时候,很多时候为的是建立一个缓存表,或者映射map,这些来自于Object的属性其实并不需要。甚至在极少可能下,会对我们的业务代码产生影响。那么有没有办法创建一个真正的干净的空对象呢?

const obj = Object.create(null);

这时目前业内最认可的做法,在大部分的开源库中都能找到这种写法。思路是创建一个对象,并指明他NULL为他的原型,因此他没有任何属性,构造函数等内容。

const obj1 = {};
const obj2 = new Object();
const obj3 = Object.create(null);

希望这个分享对大家有帮助。😁