js中 typeof 和 instanceof 的區別

typeof 和 instanceof 都能判斷數據類型,可是它們之間有什麼區別呢,淺談以下函數

typeof

用於判斷數據類型,返回值爲如下6種類型

1.stringspa

2.booleanprototype

3.number對象

4.function繼承

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

6.undefined原型

 

instanceof

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

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

因此咱們就知道instanceof 是對象運算符。這裏的實例就牽扯到了對象的繼承,它的判斷就是根據原型鏈進行搜尋,若是對象 obj1 的原型鏈上存在另外一個對象obj2的原型屬性,function

那麼,表達式(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 對對象(null、array、object)判斷更加細緻清晰!!!

相關文章
相關標籤/搜索