js数组类型判断与数据类型判断回顾
2014-11-07 13:03
543 查看
判断一个对象是否是数组方法有多种:
一、Array.isArray()函数
在ECMAScript5中可以通过Array.isArray()来做这件事:
二、instanceof
instanceof操作符用于判断一个变量是否为一个对象的实例,只能用于简单的情形:
instanceof的问题:1、检测对象的继承关系,而不检测创建对象的构造函数,无法通过对象来获得类名,只能检测对象是否属于指定的类名;2、在web浏览器中,可能存在多个窗口或多个窗体,每个窗口都有自己js环境和自己的全局对象,每个对象都有自己的一组构造函数,因此一个窗体的对象不可能是另外窗体中的构造函数的实例,窗体中的混淆不常发生。
三、prototype与call
四、constructor
constructor返回对象的构造函数
注意:使用instanceof和construtor来判断数组 ,被判断的数组必须是在当前页面声明的。比如,在一个子页面中声明了一个数组,并将其值赋给父页面的一个变量,这时判断这个变量:变量.constructor==Array;此时返回false。
原因:数组属于引用数据,在传递过程中仅仅传递引用地址;每个页面Array原生对象的所引用的地址是不一样的,也就是说父页面的Array并不等于子页面的Array。
其他类型的判断方法和数组类似,下面是关于constructor和typeof返回值的一个列表:
一、Array.isArray()函数
在ECMAScript5中可以通过Array.isArray()来做这件事:
Array.isArray({}); //false Array.isArray([]); //true
二、instanceof
instanceof操作符用于判断一个变量是否为一个对象的实例,只能用于简单的情形:
[] instanceof Array; //true {} instanceof Array; //false d=new Date(); d instanceof Date; //true d是由Date()创建的 d instanceof Object; //true 所有的对象都是Object的实例
instanceof的问题:1、检测对象的继承关系,而不检测创建对象的构造函数,无法通过对象来获得类名,只能检测对象是否属于指定的类名;2、在web浏览器中,可能存在多个窗口或多个窗体,每个窗口都有自己js环境和自己的全局对象,每个对象都有自己的一组构造函数,因此一个窗体的对象不可能是另外窗体中的构造函数的实例,窗体中的混淆不常发生。
三、prototype与call
Object.prototype.toString.call([])==="[object Array]" //true Object.prototype.toString.call({})==="[object Array]" //false
四、constructor
constructor返回对象的构造函数
[].constructor==Array //true {}.constructor==Array //false
注意:使用instanceof和construtor来判断数组 ,被判断的数组必须是在当前页面声明的。比如,在一个子页面中声明了一个数组,并将其值赋给父页面的一个变量,这时判断这个变量:变量.constructor==Array;此时返回false。
原因:数组属于引用数据,在传递过程中仅仅传递引用地址;每个页面Array原生对象的所引用的地址是不一样的,也就是说父页面的Array并不等于子页面的Array。
其他类型的判断方法和数组类似,下面是关于constructor和typeof返回值的一个列表:
变量 | 变量.constructor | typeof 变量 |
[] | Array | object |
{} | Object | object |
var f=function(){} | Function | function |
"a string" | String | string |
88 | Number | number |
True | Boolean | boolean |
var a | / | undefined |
null | / | object |
new User() | User | object |
相关文章推荐
- js数据类型判断和数组判断
- javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)
- js数据类型判断和数组判断
- 浅谈js数据类型判断与数组判断
- js数据类型判断和数组判断
- js数据类型判断和数组判断
- 判断数据类型,判断是否空对象,js判断是不是数组
- js数据类型判断和数组判断
- js数据类型判断和数组判断
- js数据类型和数组判断
- js判断数据类型如判断是否为数组是否为字符串等等
- JS数据类型判断和数组类型判断
- 浅谈js数据类型判断与数组判断
- js数据类型判断和数组判断
- js数据类型判断和数组判断
- js数据类型判断和数组判断
- js判断数据类型如判断是否为数组是否为字符串等等
- js-数据类型,怎么判断是数组?
- js数据类型判断和数组判断
- js数据类型判断和数组判断