搜索

首页  >  问答  >  正文

javascript - js中为什么没有真正意义上的空对象?

js中用对象字面量方法创建一个对象,var obj={};既然没有调用Object构造函数,为什么还是其实例了?这样的对象不就应该是空的对象吗?为什么其原型是Object.prototype?

世界只因有你世界只因有你2869 天前621

全部回复(4)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:26:47

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

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

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:26:47

    1. 这事儿你得去问Brendan Eich

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

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

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:26:47

    js是有空对象的

    Object.create(null);

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:26:47

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

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

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

    回复
    0
  • 取消回复