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ū)別(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript動(dòng)態(tài)加載實(shí)現(xiàn)方法一
這兩天,沒什么太多的事情,好吧,我承認(rèn),是我這兩天不想做公司的項(xiàng)目,因?yàn)槲彝话l(fā)奇想,其實(shí)也不算突發(fā)奇想,算是對(duì)以前的想法的實(shí)現(xiàn),就是把JS當(dāng)做Java來寫2012-08-08
使用canvas修改二維碼顏色的實(shí)現(xiàn)過程
二維碼作為現(xiàn)代信息傳遞的重要工具,其黑白色調(diào)一直是其標(biāo)志性特征,然而,有時(shí)我們可能希望個(gè)性化定制二維碼的顏色,以適應(yīng)特定設(shè)計(jì)需求或提高可識(shí)別性,在這篇文章中,我們將深入探討如何使用Canvas技術(shù)修改二維碼的顏色,為二維碼添加更多創(chuàng)意和個(gè)性2023-11-11
js動(dòng)態(tài)創(chuàng)建、刪除表格示例代碼
生成一個(gè)2000*5的表格,每個(gè)單元格的內(nèi)容是行號(hào)+逗號(hào)+列號(hào),具體的實(shí)現(xiàn)過程如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
jquery動(dòng)態(tài)添加刪除div 具體實(shí)現(xiàn)
這篇文章介紹了jquery動(dòng)態(tài)添加刪除div實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-07-07

