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?
var obj = {}; 只是一种简写方式,相当于 var obj = Object.create({});
Object.create(null); 可能是个空对象。
这事儿你得去问
Brendan Eich
。我觉得你先说说,你定义的所谓
空对象
是啥。按照你的题目描述,我猜你所谓的
空对象
应该是指最原始的那个对象原型吧?这个东西是有的,它是null
,所有对象原型链的尽头都是它。js是有空对象的
实践是验证真理的唯一标准
从概念上来讲, Object 被定义为所有对象的根对象, 是"面向对象"这个概念最基本单位(参照), 去掉以后整个概念都会崩塌;
你能想像物质没有分子/原子?
不管你是new创建的还是用字面量创建, 编译器都会自动给对象认祖归宗
呀, null 例外, 这玩意儿本身就是个特例啊. js一开始把它当对象, 是然后后续的 Object.create(null) 才会出现所谓的"空对象"现象, 如果一开始把它定为一个特殊值, 那就没有 Object.create(null) 啥事了.
所以在我理解里, 这种"空对象"是一种定义上的自洽和衔接, 并不应该归于"面向对象"这个概念里.