typeof操作符
主要用來檢測基本類型。
// 基本類型
let u = undefined; // Undefined
let n = null; // Null
let b = true; // Boolean
let str = 'string'; // String
let num = 123; // Number
// 引用類型Object
let arr = [1,2];
let fun = function(){};
let obj = {};
// es6新增類型Symbol
let symbol = Symbol();
console.log( typeof u ); // undefined
console.log( typeof n ); // object
console.log( typeof b ); // boolean
console.log( typeof str ); // string
console.log( typeof num ); // number
console.log( typeof arr ); // object
console.log( typeof fun ); // function
console.log( typeof object ); // object
console.log( typeof symbol); // symbol
總結(jié):
- typeof操作符可以用來檢測基本類型(除了null)和函數(shù)驯绎。
- typeof操作符對null會返回object。
- typeof操作符對函數(shù)會返回function昌跌。
- typeof操作符適合用來檢測Undefined秉撇、Boolean、String浑劳、Number和Function阱持。
- typeof操作符可以用檢測Symbol類型。
instanceof操作符
主要用來檢測引用類型
let obj = {};
let arr = [1,2];
console.log( obj instanceof Object ) // true
console.log( arr instanceof Array ) // true
console.log( symbol instanceof Symbol ) // false
總結(jié):
如果變量是給定的引用類型的實(shí)例魔熏,則返回true
Object.prototype.toString.call()方法
比較安全可靠的類型檢測方法衷咽,該方法會拿到變量的構(gòu)造函數(shù)名鸽扁。
返回的格式是"[object ConstructorName]"
。
console.log( Object.prototype.toString.call(u) ); // [object Undefined]
console.log( Object.prototype.toString.call(n) ); // [object Null]
console.log( Object.prototype.toString.call(str) ); // [object String]
console.log( Object.prototype.toString.call(num) ); // [object Number]
console.log( Object.prototype.toString.call(b) );// [object Boolean]
console.log( Object.prototype.toString.call(arr) ); // [object Array]
console.log( Object.prototype.toString.call(fun) ); // [object Function]
console.log( Object.prototype.toString.call(obj) );// [object Object]
console.log( Object.prototype.toString.call(symbol) );// [object Symbol]
// 檢測自定義構(gòu)造函數(shù)生成的變量
function A(){};
let a = new A();
console.log( Object.prototype.toString.call(a) )// [object Object]
總結(jié):
該方法相對安全可靠镶骗,但是無法檢測自定義構(gòu)造函數(shù)生成的實(shí)例變量桶现。
Jquery的$.type()方法
該方法同typeof一樣返回數(shù)據(jù)類型,但是比typeof操作符更加精確鼎姊。
console.log( $.type(n) ) // null
console.log( $.type(arr) ) // array
console.log( $.type(fun) ) // function
console.log( $.type(obj) ) // object
console.log( $.type(symbol) ) // symbol