一次徹底搞清楚typeof和instanceof的用法區別如何判斷js所有內置對象的類型

typeof

作用:用於判斷一個一個表達式,(對象或者原始值),返回一個字符串。

用法 typeof a

類型 結果
Undefined : “undefined”
Null : “object” (歷史遺留問題)
Boolean: “boolean”
Number : “number”
String : “string”
Symbol (ECMAScript 6 新增): “symbol”
函數對象 : “function”
任何其他對象 : “object”

例子:

console.log(typeof 1); // number
console.log(typeof test); // function 
console.log(typeof "yunxi"); // string
console.log(typeof undefined); // undefined
console.log(typeof []);  // object
console.log(typeof /\d+/g); // object

instanceof

作用:instanceof 運算符用來測試一個對象在其原型鏈中是否存在一個構造函數的 prototype 屬性。

用法object **instanceof** constructor前面是個對象,後面是一個構造函數。而且返回的是布爾型的,不是true就是false。

常見例子
判斷是否爲數組[] instanceof Array //true

typeof 與instanceof結合判斷數據類型

我們希望有個方法能將js中所有內置對象進行判斷
Object Boolean String Number Function Array RegExp Date Error Null,Undefined

  function getObjType(obj) {
        if(obj === null){
            return "null";
        }else if(typeof obj === "object"){
            if(obj instanceof Array){
                return "array";
            } else if(obj instanceof RegExp){
                  return "regExp";
             }else if(obj instanceof Date){
                  return "date";
             }else if(obj instanceof Error){
                  return "error";
             }  else{
                return "object";
            }
        }else{
            return typeof obj;
        }
  }

測試結果:
在這裏插入圖片描述

發佈了77 篇原創文章 · 獲贊 8 · 訪問量 6880
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章