面向对象中判断数组的方法

面向对象中判断数组的方法

写在前面:如有错误多多指教!

判断数组的方法:

1.constructor

var arr=[];
alert(arr.constructor==Array)//true

2.instanceof

var arr=[];
console.log(arr instanceof Array);//true

3.toString(目前看来最稳妥的判断数组的方法)
利用toString做类型的判断

var arr =[];
alert(Object.prototype.toString.call(arr));//"[object Array]"
var arr ={};
alert(Object.prototype.toString.call(arr));//[object Object]
var arr=new Date (); 
alert(Object.prototype.toString.call(arr));//[object Date]
var arr=new RegExp; 
alert(Object.prototype.toString.call(arr));//[object RegExp]
var arr=null; 
alert(Object.prototype.toString.call(arr));//[object Null]

//通过上面我们可以通过toString判断数组
var arr =[];
alert(Object.prototype.toString.call(arr)=='[object Array]')//true;
为什么说tostring是目前看来最稳妥的判断数组的方法?

在iframe下,第一种和第二种会判断错误
其实iframe下的arr 是数组 但是在iframe下判断就发生错误了
只有第三种判断是正确的
但是此种情况,不常见

window.οnlοad=function(){
    var oF=document.createElement('iframe');
    document.body.appendChild(oF);//添加到文档节点中
    var ifArray = window.frames[0].Array;//找到iframe下的数组
    var arr =new ifArray();//创建iframe下的数组

    alert(arr.constructor==Array);//false
    alert(arr instanceof Array);//false
    alert(Object.prototype.toString.call(arr)=='[object Array]');//true
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值