区分数组对象

it2022-05-08  18

//最佳方法 var arr = [1,2,3,1]; var arr2 = [{ abac : 1, abc : 2 }]; function isArrayFn(value){ if (typeof Array.isArray === "function") { return Array.isArray(value); }else{ return Object.prototype.toString.call(value) === "[object Array]"; } } alert(isArrayFn(arr));// true alert(isArrayFn(arr2));// true // tostring方法 function isArrayFn (o) { return Object.prototype.toString.call(o) === '[object Array]'; } var arr = [1,2,3,1]; alert(isArrayFn(arr));// true // constructor instanceof var arr = [1,2,3,1]; alert(arr instanceof Array); // true var arr = [1,2,3,1]; alert(arr.constructor === Array); // true var iframe = document.createElement('iframe'); //创建iframe document.body.appendChild(iframe); //添加到body中 xArray = window.frames[window.frames.length-1].Array; var arr = new xArray(1,2,3); // 声明数组[1,2,3] alert(arr instanceof Array); // false alert(arr.constructor === Array); // false // 貌似无懈可击,但是实际上还是有些漏洞的, // 当你在多个frame中来回穿梭的时候,这两种方法就亚历山大了。 // 由于每个iframe都有一套自己的执行环境, // 跨frame实例化的对象彼此是不共享原型链的,因此导致上述检测代码失效

最新回复(0)