arr instanceof Array

全局执行环境不同就会导致结果不一样

instanceof原理:递归的寻找左侧变量的 __proto__,看能不能找到右变量的 prototype

例如index.html给iframe传数组arr过去,在iframe中 arr instanceof Array===false

 

 

Object.prototype.toString.call(arr)==='[object Array]'

缺点是toString可以被改写

Object.prototype.toString = ()=>'564566';

 

 

Array.isArray(arr)

缺点是兼容性不太好, IE9+ FF4+ Safari5+ Opera10.5+ Chrome