使用 Object.create(null) 创建空对象
使用对象字面量形式时,隐式地创建了一个以 Object.prototype
作为原型的对象。
以下两种方式等同。
var o1 = {}
var o2 = Object.create(Object.prototype)
更省事的方法
var o3 = Object.create(null)
创建一个不继承任何原型的对象。
如果需要创建一个简单的 map 性质的对象,使用此种方式,在对 o3
进行遍历的时候,就可以躲开充满恶意的世界在 Object.prototype
上添加的方法或属性。
for (const k in o1) {
if (o1.hasOwnProperty(k)) {
}
}
// 遍历时不需要判断 hasOwnProperty
for (const k in o3) {
}