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

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

          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!