溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中object和Object的區(qū)別(詳解)

發(fā)布時間:2020-10-03 18:51:20 來源:腳本之家 閱讀:353 作者:jingxian 欄目:web開發(fā)

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

JavaScript中object和Object的區(qū)別(詳解)

這個問題和我之前遇到的問題非常相似,我認為這里有兩個問題需要解決,一個是運算符new的作用機制,一個是function關鍵字和Funtion內(nèi)置對象之間的區(qū)別。看了一些前輩的博客和標準,這里幫提問者總結一下。

1、new

new運算符的作用是創(chuàng)建一個對象實例。這個對象可以是用戶自定義的,也可以是帶構造函數(shù)的一些系統(tǒng)自帶的對象。如果 new 表達式之后的構造函數(shù)返回的不是JavaScript內(nèi)置的引用對象(Object,String等)new會創(chuàng)建一個匿名對象并返回;如果是內(nèi)置引用對象或者原始類型就會覆蓋匿名對象。(無 return 時其實為 return 原始類型 undefined)。new運算符詳細介紹

2、function和Function

ECMAScript 的Function實際上就是一個功能完整的對象。而function這個關鍵字是用來創(chuàng)建所有對象的構造函數(shù)或者普通函數(shù)要用的關鍵字ECMAScript如何定義類和對象,提問者var a=new function(){}實際上是用構造函數(shù)的方法創(chuàng)建了一個匿名對象的實例,而并不是系統(tǒng)內(nèi)置對象Function的實例,所以a instanceof Function返回false,typeof返回"object"。

那么什么時候typeof返回"function"呢?當它真的是一個函數(shù)名的時候。

 

`function a (){}
//undefined
typeof a
//"function"`

 typeof 和 instanceof 這兩個功能就是完全不一樣的運算符。typeof 是為了檢查數(shù)據(jù)類型,instanceof是為了看一個變量是否是某個對象的實例。

typeof 的目的,是檢查數(shù)據(jù)類型,而它的輸出,非常確定的只有如下幾個:

•undefined

•object

•boolean

•number

•string

•function

•symbol(新)

typeof 返回的結果,是一個字符串。只要檢查的變量是一個對象,或者是 Null,那它就會返回 object,這當然不夠精確,所以有了 instanceof。

因為不存在 object 這個對象,所以會提示你 object is not defined 。而 Object 是 JavaScript 中一個重要的對象,其它對象都是基于它的,包括你創(chuàng)建的函數(shù)。你創(chuàng)建 a 的時候,使用的是 new 關鍵字,這相當于是一個 Function 引用類型的實例。所以 a instanceof Object 就會是 true。

區(qū)別是Object 是一種對象類型, "object"是一個字符串, 你不定義的話沒有意義。

以上這篇JavaScript中object和Object的區(qū)別(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI