鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 為什么定義Object前后Object.prototype.__proto__會(huì)

為什么定義Object前后Object.prototype.__proto__會(huì)有變化??

  1. 為什么用 function 定義了就不同?
  2. 是因?yàn)榍昂髢蓚€(gè) Object 不同嗎?打印兩者的差距就在,前者多了一句: native code。

代碼圖:

圖片描述

回答
編輯回答
挽青絲
  1. 前者和后者不同,前者是 window的一個(gè)屬性 Object;
    后者是定義了一個(gè)函數(shù)。
  2. 帶有 native code說明是原生的方法,里面是二進(jìn)制碼。
2017年12月19日 19:09
編輯回答
憶往昔

你可以搜一下那張經(jīng)典的原型鏈圖,我簡(jiǎn)單說一下,首先Object.prototype.__proto__ === null,而Object.prototype === Person.prototype.__proto__,而下面你重寫了Object函數(shù),也就自然能夠log出函數(shù)體,在瀏覽器中,原生的函數(shù)toString方法log出的都是native code,這也成為判斷一個(gè)函數(shù)是否為原生函數(shù)的重要依據(jù)。

2018年3月5日 07:34
編輯回答
吃藕丑

因?yàn)槟阕约憾x了一個(gè)Object,把系統(tǒng)自帶的Object給覆蓋了

2018年3月19日 15:51
編輯回答
巷尾

我的理解:
Object是內(nèi)置對(duì)象,之后你定義了一個(gè)函數(shù)是function Object(){}(以fnObj代稱);
這兩個(gè)對(duì)象是完全不一樣的;
內(nèi)置Object里有判斷是否是實(shí)例化new,可以直接自變量var a = {};
Object.prototype是原型鏈的最頂層的對(duì)象;所以 Object.prototype.__proto__ 只能是null;
fnObj是個(gè)函數(shù),它和function person(){}是一類的。
他們的prototype.__proto__ 是等于 Ojbect.prototype;
你用Object命名把內(nèi)置對(duì)象覆蓋掉,當(dāng)你new實(shí)例化的時(shí)候 它將是fnObj實(shí)例

建議MDN連接地址 或者 js高級(jí)程序設(shè)計(jì)書 看看

2017年12月24日 00:36
編輯回答
浪蕩不羈

沒什么好說的,看圖說話。
javascript_object_layout.jpg

2017年3月9日 01:24