4 回答

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

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

TA貢獻1841條經(jīng)驗 獲得超3個贊
前者和后者不同,前者是 window的一個屬性 Object;
后者是定義了一個函數(shù)。帶有
native code
說明是原生的方法,里面是二進制碼。
添加回答
舉報