Object.create(null)vs {}之间的区别?

时间:2016-05-26 22:05:27

标签: javascript object

通过Object.create(null)语法创建的对象与{}语法之间是否存在差异?

从节点v5.6.0 REPL:

> var a = Object.create(null)
undefined
> var b = {}
undefined
> a == b
false
> a.prototype
undefined
> b.prototype
undefined

2 个答案:

答案 0 :(得分:5)

toString生成的对象完全为空 - 它们不会从Object.prototype继承任何内容。

空对象可以。

在以下示例中,我正在检查var fromNull = Object.create(null); console.log(typeof fromNull.toString); var emptyObject = {}; console.log(typeof emptyObject.toString);

的属性



MEDIA_ROOT = os.path.join(BASE_DIR, "media/") 
MEDIA_URL = '/media/' 
In URLs.py--
Url(r'^media/(?^<path>.*)$','django.views.static.serve',{'document_root':
 settings.MEDIA_ROOT,}),
&#13;
&#13;
&#13;

答案 1 :(得分:4)

有区别。

使用{},您可以创建一个原型为Object.prototype的对象。但是,Object.create(null)创建的对象的原型是null

从表面上看,它们似乎是相同的,但在后一种情况下,您不会继承附加到Object原型的基本功能。

&#13;
&#13;
var objPrototype = {};
console.log(objPrototype.toString());
var nullPrototype = Object.create(null);
console.log(nullPrototype.toString());
&#13;
&#13;
&#13;