javascript - js中為什麼沒有真正意義上的空物件?
世界只因有你
世界只因有你 2017-05-19 10:24:47
0
4
537

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) 啥事了.
所以在我理解裡, 這種"空對象"是一種定義上的自洽和銜接, 並不應該歸於"面向對象"這個概念裡.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板