我更喜欢使用Object.create(null),这样我就可以将对象用作简单的字典来存储基本信息.如果我需要对象功能,那么我会创建一个普通对象,例如var obj = {x:3, etc};
这是因为{}并不是真正的空白对象,因为它链接到Object原型,所以在循环中你必须做的hasOwnProperty是阻止它在原型链周围跳舞,并且对每个循环进行检查会阻碍性能,尽管它可以忽略不计.
使用Object.create(null)而不是不好的做法{},所以我不必hasOwnProperty在每个循环中写入?
编辑:可能重复,但我不是问他们是如何或为什么他们不同,而是我有兴趣知道其他人是否使用Object.create(null)?在Javascript中是SOP吗?
编辑2:我也更喜欢进行单行检查,例如if(obj[someKey])...ht'Tribute to APJ Kalam Sir'.
当我创建一个空白对象时:
var o = {};
Run Code Online (Sandbox Code Playgroud)
为什么我在创建新对象时无法查看'__proto __'对象,但我可以在添加函数时使用它?

编辑:为了完整性,要创建一个真正空白的对象(没有原型链接),我们可以这样做:
var o = Object.create(null);
Run Code Online (Sandbox Code Playgroud)
但出于问题的目的,我将使用o = {}语法.
编辑2:这显示了对象创建时的原型链接,所以__proto的__在那里,但我无法在调试器中查看它们,除非我添加一个函数对象.

编辑3:它适用于Firefox:
