1、typeof
一元運算符,用來檢測數據類型。只可以檢測number,string,boolean,object,function,undefined。
對於基本數據類型是沒有問題的,但是遇到引用數據類型是不起作用的(無法細分對象)
let str = '{}'; let fn = function(){}; let obj = {}; let ary = []; let rg = /\d/; console.log(typeof str);//string console.log(typeof fn);//function console.log(typeof obj);//object console.log(typeof ary);//object console.log(typeof rg);//object
2、instanceof(二元運算符,需要兩個操作數)
檢測某個對象是不是另外一個對象的實例
instanceof只能用來判斷對象和函數,不能用來判斷字符串和數字
let arr = [1,2,3]; console.log(arr instanceof Array);//true 檢測arr是不是內置類Array的實例
3、constructor
js中所有對象都繼承於Object,constructor是其中的一個屬性。默認指向實例的構造函數(可以修改)
function fns (){} let f = new fns; console.log(f.constructor === fns);//true console.log(f.constructor.name);//fns構造函數名稱
//constructor屬性並非一定指向構造函數,他也可以修改、變更
4、Object.prototype.toString.call
JavaScript中,通過Object.prototype.toString方法,判斷某個對象值屬於哪種內置類型
let date = new Date; console.log(Object.prototype.toString.call(date));//[object Date] let re = '/\d+g/'; console.log(Object.prototype.toString.call(re));//[object String] let sz = [2,3,4]; console.log(Object.prototype.toString.call(sz));//[object Array] let hs = function(){}; console.log(Object.prototype.toString.call(hs));//[object Function]