1.instanceof
使用instanceof判斷數(shù)組,instanceof會(huì)判斷這個(gè)對象的原型鏈上是否會(huì)找到對應(yīng)的Array的原型,找到則返回true,否則返回false;
[] instanceof Arrary // true
缺點(diǎn):instanceof 只能判斷對象,原始類型不可以, 并且所有對象類型 instanceof Object 都返回true

instanceof.png
2. Array.isArray
當(dāng)檢測Array實(shí)例時(shí),Array.isArray 優(yōu)于 instanceof
其內(nèi)部原理是基于Object.prototype.toString.call()
Array.isArray = function(value) {
return Object.prototype.toString.call(value) === '[object Array]';
}
3. Object.prototype.toString.call()
任何數(shù)據(jù)類型的原型最終指向Object, Object的最終指向null。
Object有一個(gè)內(nèi)置方法toString, 通過call()方法可以判斷任何數(shù)據(jù)類型, symbol也可以
let s = Symbol(2)
Object.prototype.toString.call(s) // "[object Symbol]"