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