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