javascript中Object與Function之間的關係

首先看幾個例子:函數

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

網上有張圖可以詳細說明:繼承

相關文章
相關標籤/搜索