instanceof操作符合Array.isArray()都可以判断一个对象是不是数组,但是Array.isArray()优于instanceof操作符,instance操作符的问题再于假定它只有一个全局执行环境。如果网页中国包含多个框架,那实际上就存在两个以上的全局执行环境,从而存在两个以上不同版本的Array构造函数,如果你从一个框架向另外一个框架传入一个数组,那么传入的数组与第二个框架中原生创建的构造函数分别具有不同的构造函数。Array.isArray()只负责判断这个对象是不是数组,而不管他在哪个全局环境下创建的。
体会下区别:
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray();
Array.isArray(arr); // true
arr instanceof Array; // false