JavaScript中object和Object的區(qū)別(詳解)
JavaScript中object和Object有什么區(qū)別,為什么用typeof檢測對象,返回object,而用instanceof 必須要接Object呢

這個問題和我之前遇到的問題非常相似,我認(rèn)為這里有兩個問題需要解決,一個是運算符new的作用機制,一個是function關(guān)鍵字和Funtion內(nèi)置對象之間的區(qū)別??戳艘恍┣拜叺牟┛秃蜆?biāo)準(zhǔn),這里幫提問者總結(jié)一下。
1、new
new運算符的作用是創(chuàng)建一個對象實例。這個對象可以是用戶自定義的,也可以是帶構(gòu)造函數(shù)的一些系統(tǒng)自帶的對象。如果 new 表達(dá)式之后的構(gòu)造函數(shù)返回的不是JavaScript內(nèi)置的引用對象(Object,String等)new會創(chuàng)建一個匿名對象并返回;如果是內(nèi)置引用對象或者原始類型就會覆蓋匿名對象。(無 return 時其實為 return 原始類型 undefined)。new運算符詳細(xì)介紹
2、function和Function
ECMAScript 的Function實際上就是一個功能完整的對象。而function這個關(guān)鍵字是用來創(chuàng)建所有對象的構(gòu)造函數(shù)或者普通函數(shù)要用的關(guān)鍵字ECMAScript如何定義類和對象,提問者var a=new function(){}實際上是用構(gòu)造函數(shù)的方法創(chuàng)建了一個匿名對象的實例,而并不是系統(tǒng)內(nèi)置對象Function的實例,所以a instanceof Function返回false,typeof返回"object"。
那么什么時候typeof返回"function"呢?當(dāng)它真的是一個函數(shù)名的時候。
`function a (){}
//undefined
typeof a
//"function"`
typeof 和 instanceof 這兩個功能就是完全不一樣的運算符。typeof 是為了檢查數(shù)據(jù)類型,instanceof是為了看一個變量是否是某個對象的實例。
typeof 的目的,是檢查數(shù)據(jù)類型,而它的輸出,非常確定的只有如下幾個:
•undefined
•object
•boolean
•number
•string
•function
•symbol(新)
typeof 返回的結(jié)果,是一個字符串。只要檢查的變量是一個對象,或者是 Null,那它就會返回 object,這當(dāng)然不夠精確,所以有了 instanceof。
因為不存在 object 這個對象,所以會提示你 object is not defined 。而 Object 是 JavaScript 中一個重要的對象,其它對象都是基于它的,包括你創(chuàng)建的函數(shù)。你創(chuàng)建 a 的時候,使用的是 new 關(guān)鍵字,這相當(dāng)于是一個 Function 引用類型的實例。所以 a instanceof Object 就會是 true。
區(qū)別是Object 是一種對象類型, "object"是一個字符串, 你不定義的話沒有意義。
以上這篇JavaScript中object和Object的區(qū)別(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript溫習(xí)的一些筆記 基礎(chǔ)常用知識小結(jié)
在電腦上找到多年前的javascript的一些小筆記,因為要將筆記本上面的文件整理一下, 不用的刪除掉, 所以將此篇筆記再發(fā)布一下,存檔到自己的博客吧, 電腦上的文件就刪除了2011-06-06
關(guān)于meta viewport中target-densitydpi屬性詳解(推薦)
這篇文章主要介紹了關(guān)于meta viewport中target-densitydpi屬性詳解,通過不同的縮放比例實現(xiàn)了不同的預(yù)覽效果,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08
JavaScript學(xué)習(xí)筆記之函數(shù)記憶
這篇文章主要介紹了JavaScript學(xué)習(xí)筆記之函數(shù)記憶,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
向?qū)Э梢宰屇愕木W(wǎng)站用戶快速上手使用你的web應(yīng)用,提高網(wǎng)站的吸引力。向?qū)б话惴譃楹脦讉€步驟,每個步驟收集一些數(shù)據(jù),并且支持退回功能,所有步驟完成后可以得到每一步的收集結(jié)果。這里給大家展示一種比較通用,靈活且簡單的向?qū)Э蚣堋?/div> 2011-08-08
javascript 鼠標(biāo)拖動圖標(biāo)技術(shù)
剛剛學(xué)習(xí)了個js的小技術(shù),還蠻好玩的,以后會把做的一些小例子貼上來,方便自己也可以跟大家一起分享學(xué)習(xí)成果,哈哈~~2010-02-02最新評論

