typeof 和instanceof的區別

2021-09-29 10:12:49 字數 1206 閱讀 7498

前言

早在很久很久以前我就已經接觸到這兩個詞了,有時後也在用,但是就是對其概念比較模糊,很久之後的現在,我決定搞明白它。

1.typeof

檢測乙個物件的資料型別,能檢測並返回的型別有(array,number,function,string,undefined,和object 6種型別),返回值為字串型別

在這裡要說明一下nan返回的資料型別也是number,但是nan不等於它本身,所以可以用(typeof x ==『number』 && x != x)來判斷是不是nan,

像包括{},,null這三種物件都會返回object型別,要想對這三種型別區分可以使用tostring.call(x)這種方式來判斷,這種方式返回的是[object object],[object array],[object null]這種方式的字串,當然其他五種資料型別也可以這麼進行判斷。

2.instanceof

這個玩意就比較不太好理解了,因為想要理解它,你需要熟悉一下物件導向程式設計,在物件導向程式設計裡,你需要知道什麼叫例項,什麼叫類,有了這兩個概念就比較好理解了

建立類的方法(es5)

function parent(){} 說的簡單點就是建立乙個方法,為了區別一般的方法,這個方法名 一定 要大寫

建立乙個例項

var a=new parent() 就是想咱們平常說的new乙個物件,就是建立乙個類的例項,a就是parent的例項

那麼知道例項了,你一定要知道每個例項都會有乙個_proto_屬性,這個屬性指向了構造它的(建構函式)類,也就是說a 的_proto_指向的是parent,(相關知識可以去檢視物件導向相關)重要的話來了:insatnceof就是用來判斷乙個例項的指向的。那麼a instanceof parent 結果為true.

多說幾句吧

我們都知道 var b= ; b instanceof array 值肯定為true,為啥呢,因為b=等價於b=new array(); b 是array類的例項,所以b的_proto_指向的就是array,所以 b instanceof array 值為true。

結語:

本人才學疏淺,還不是大佬,希望有個人見解的大佬對我不對的地方進行指導,我會積極改進,對我說的不足的地方多多補充,我也會感激不盡,最後我想說一句 #js是世界上最好的語言#

JS基礎之typeof和instanceof用法

在js中當不確定運算元的型別時,可以通過typeof 函式返回變數的型別。typeof 函式會把型別資訊當做字串返回,且typeof的返回值有六種情況,這六種返回值型別分別是 typeof的使用 舉例說明 console.log typeof null object console.log type...

database和instance的區別

database 資料庫,一組相關的物理檔案,比如資料檔案 日誌檔案和控制檔案等等,是物理上實實在在存在的,即使關閉資料庫仍然存在。instance 例項。記憶體和一些程序,比如sga 後台程序 windows系統是執行緒 當關閉資料庫後例項消失。兩者是相輔相成的,經常在一起使用。我們以常見的資料庫...

instance恢復概覽

instance恢復概覽 相關動態檢視 oracle 伺服器提供許多標準檢視以獲取有關資料庫和例程的資訊。這些檢視包括 v sga 查詢有關例程的以下各項的大小 共享池 日誌緩衝區 資料緩衝區快取記憶體以及固定記憶體大小 取決於作業系統 v instance 查詢例程的狀態,如例程模式 例程名 啟動...