javascript - js中为什么没有真正意义上的空对象?
世界只因有你
世界只因有你 2017-05-19 10:24:47
0
4
559

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

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

全部回复(4)
我想大声告诉你

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

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

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

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

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

我想大声告诉你

js是有空对象的

Object.create(null);

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

大家讲道理

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板