通过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
答案 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;
答案 1 :(得分:4)
有区别。
使用{}
,您可以创建一个原型为Object.prototype
的对象。但是,Object.create(null)
创建的对象的原型是null
。
从表面上看,它们似乎是相同的,但在后一种情况下,您不会继承附加到Object原型的基本功能。
var objPrototype = {};
console.log(objPrototype.toString());
var nullPrototype = Object.create(null);
console.log(nullPrototype.toString());
&#13;