JavaScript中object和Object有什么區(qū)別,為什么用typeof檢測對象,返回object,而用instanceof 必須要接Object呢
這個問題和我之前遇到的問題非常相似,我認為這里有兩個問題需要解決,一個是運算符new的作用機制,一個是function關鍵字和Funtion內置對象之間的區(qū)別。看了一些前輩的博客和標準,這里幫提問者總結一下。
1、new
new運算符的作用是創(chuàng)建一個對象實例。這個對象可以是用戶自定義的,也可以是帶構造函數(shù)的一些系統(tǒng)自帶的對象。如果 new 表達式之后的構造函數(shù)返回的不是JavaScript內置的引用對象(Object,String等)new會創(chuàng)建一個匿名對象并返回;如果是內置引用對象或者原始類型就會覆蓋匿名對象。(無 return 時其實為 return 原始類型 undefined)。new運算符詳細介紹
2、function和Function
ECMAScript 的Function實際上就是一個功能完整的對象。而function這個關鍵字是用來創(chuàng)建所有對象的構造函數(shù)或者普通函數(shù)要用的關鍵字ECMAScript如何定義類和對象,提問者var a=new function(){}實際上是用構造函數(shù)的方法創(chuàng)建了一個匿名對象的實例,而并不是系統(tǒng)內置對象Function的實例,所以a instanceof Function返回false,typeof返回"object"。
那么什么時候typeof返回"function"呢?當它真的是一個函數(shù)名的時候。
`function a (){} //undefined typeof a //"function"`
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。