typeof操作符
1."undefined"——如果这个值未定义;
2."boolean"——如果这个值是布尔值;
3."string"——如果这个值是字符串;
4."number"——如果这个值是数值;
5."object"——如果这个值是对象或 null;
6."function"——如果这个值是函数。
7."symbol"——es6新增的symbol类型
instanceof:用来判断对象是不是某个构造函数的实例。会沿着原型链找的
Object.prototype.toString.call()
var toString = Object.prototype.toString;
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
toString.call([]); // [Object Array]
toString.call(new Number) // [object Number]
toString.call(true) // [object Boolean]
toString.call(function(){}) // [object Function]
toString.call({}) // [object Object]
toString.call(new Promise(() => {})) // [object Promise]
toString.call(new Map) // [object Map]
toString.call(new RegExp) // [object RegExp]
toString.call(Symbol()) // [object Symbol]
toString.call(function *a(){}) // [object GeneratorFunction]
toString.call(new DOMException()) // [object DOMException]
toString.call(new Error) // [object Error]
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
判断数组
1.Array.isArray(arr)
2.Object.prototype.toString.call(arr) === '[Object Array]'
3.arr instanceof Array
4.array.constructor === Array