首先看幾個例子:函數
Function instanceof Object //true Object instanceof Function // true 說明Object 是被Function 構造出來的 Function instanceof Function //true 說明本身被本身構造 Object.getPrototypeOf(Function) === Function.prototype // true Object.getPrototypeOf(Object.prototype) // null
function Foo() {}; var foo = new Foo(); //Foo爲foo的構造函數 alert(foo instanceof Foo); // true //可是Function並非foo的構造函數 alert(foo instanceof Function); // false //Function爲Foo的構造函數 alert(Foo instanceof Function);//true
Function和Object,既是函數,由於均可以Function()或者Object()這樣的方式執行,又是對象,由於能夠Function.a = 'a',Object.a = 'a'這樣賦值。spa
說它們是函數,是由於他們都是經過上面第4條中說的」內置函數工廠「,派生出來的,於是具有函數的特性。prototype
說他們是對象。是由於他們都是經過上面第1條中的」根源「對象,派生出來的,所以具有對象的特徵。code
繼續說一下,Function.prototype指向」內置函數「。而Object.prototype指向」根源對象「對象
對於Object它是最頂層的對象,全部的對象都將繼承Object的原型,可是你也要明確的知道Object也是一個函數對象,因此說Object是被Function構造出來的;blog
網上有張圖可以詳細說明:繼承