js中 typeof 和 instanceof 的區別


typeof 和 instanceof 都能判斷數據類型,但是它們之間有什么區別呢,淺談如下

typeof

用於判斷數據類型,返回值為以下7種類型

1.symbol(ES6新增)

2.string

3.boolean

4.number

5.function

6..object (注意:typeof 在判斷 nullarrayobject以及函數實例(new + 函數)時,都是返回 object)

7.undefined

 

instanceof(只能判斷對象類型)

官方解釋:用於檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。

通俗地講:用來檢測某個對象是誰的實例

所以我們就知道instanceof 是對象運算符。這里的實例就牽扯到了對象的繼承,它的判斷就是根據原型鏈進行搜尋,如果對象 obj1 的原型鏈上存在另一個對象obj2的原型屬性,

那么,表達式(obj1 instanceof obj2)返回值為 true,否則返回 false。

所以 instanceof 的返回值 為 true 或者 false

實例詳解:

 

總結 

區別:

1. typeof 能判斷的類型有: number,boolean,string,undefined,object,function。

  但是不能判斷 null,array,object和函數實例(new + 函數),都是返回object

2.instanceof 能夠對不同的對象實例進行判斷,如null,array等,返回值為布爾值,

  所以 instanceof 對對象(array、object、function)判斷更加細致清晰。

  但是:instanceof 不能判斷出基本數據類型(string、number、boolean、undefined、null)的值的類型!

 共同點:

  判斷類型都各自的不足,都不能完全准確的判斷出所有類型!!!

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM