【问题标题】:Difference {} between Object.create({})Object.create({}) 之间的区别 {}
【发布时间】:2018-06-11 19:22:21
【问题描述】:

抱歉,这个问题可能有重复,但 {} 使搜索变得困难,或者没有人这样问过。有什么区别:

var a = {};

var b = Object.create({});

使用 Google Dev Tool 看起来非常相似(即使使用 dir(a)dir(b)

【问题讨论】:

  • 我猜你的意思是Object.create(null);
  • 你的意思是Object.create({})Object.create(null)做同样的事情吗?
  • 不,{}Object.create({}); 做几乎相同的事情 (Object.create({}); 在 _proto_中创建 _proto_ >,这真的没有意义)。 Object.create(null) 创建一个空对象字面量(就像其他两个字面量一样),但原型上没有任何内容。 jsfiddle.net/dyqs7xLb。使用 Object.create(null) 被认为更安全,尤其是在使用 for in 循环时
  • 当他们使用Object.create({}); 时,他们做错了什么
  • 错误是一个苛刻的词... :-) 假设它没有任何意义。我不确定它会引入哪些错误(如果有的话)。但我很确定他们想使用新的Object.create(null) 并将其与Object.create({}) 混淆。我没有看到使用它的任何好处..

标签: javascript


【解决方案1】:

对象字面量{} 创建一个以Object.prototype 作为原型的对象。

Object.create(x) 函数调用创建了一个以x 作为原型的对象。

所以Object.create({}) 将创建一个对象,该对象有一个空对象作为其原型,而Object.prototype 作为其原型。这是非常无用的,通常应该避免这种情况。

【讨论】:

  • 我确认这是提交作者的错字,document.create 之前是类似“document.create({...})
猜你喜欢
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多