javascript - Warum gibt es in js kein wirklich leeres Objekt?
世界只因有你
世界只因有你 2017-05-19 10:24:47
0
4
560

Verwenden Sie die Objektliteralmethode, um ein Objekt in js zu erstellen. var obj={}; Warum ist es immer noch eine Instanz, da der Objektkonstruktor nicht aufgerufen wird? Sollte ein solches Objekt nicht ein leeres Objekt sein? Warum ist sein Prototyp Object.prototype?

世界只因有你
世界只因有你

Antworte allen(4)
我想大声告诉你

var obj = {}; 只是一种简写方式,相当于 var obj = Object.create({});

Object.create(null); 可能是个空对象。

淡淡烟草味
  1. 这事儿你得去问Brendan Eich

  2. 我觉得你先说说,你定义的所谓空对象是啥。

  3. 按照你的题目描述,我猜你所谓的空对象应该是指最原始的那个对象原型吧?这个东西是有的,它是null,所有对象原型链的尽头都是它。

我想大声告诉你

js是有空对象的

Object.create(null);

实践是验证真理的唯一标准

大家讲道理

从概念上来讲, Object 被定义为所有对象的根对象, 是"面向对象"这个概念最基本单位(参照), 去掉以后整个概念都会崩塌;
你能想像物质没有分子/原子?

不管你是new创建的还是用字面量创建, 编译器都会自动给对象认祖归宗

呀, null 例外, 这玩意儿本身就是个特例啊. js一开始把它当对象, 是然后后续的 Object.create(null) 才会出现所谓的"空对象"现象, 如果一开始把它定为一个特殊值, 那就没有 Object.create(null) 啥事了.
所以在我理解里, 这种"空对象"是一种定义上的自洽和衔接, 并不应该归于"面向对象"这个概念里.

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage