javascript类型判断 typeof instanceof constructor
2011-06-02 16:23
639 查看
由于javascript是弱类型语言,所有有些时候对类型的判断就十分的必要.javascript中对类型判断有3种方法.
1.typeof
返回运算数的类型,有六种可能的结果:undefined,number,string,boolean,function和object.
var strval = "Thomas";
alert(typeof strval == 'string');
typeof是最基本的用法,但是它有个很要命的弱点,如果运算数的类型是自定义的或者是Array的,那返回的结果将
都是object.当然,typeof也有个好处,如果运算数未定义,那将返回undefined,而如果用constructor判断未定义
对象的类型,则会报错,因为constructor只能检查已定义变量的类型.
2.instanceof
返回一个 Boolean值,判断对象是否是指定类的一个实例.
需要注意的是下面的例子
var arr = Array("one","two","three");
alert(arr[0] instanceof String);//输出false,因为arr[0]的类型是string,它只是string类型的数据,而不是
String类型的对象.代码可以改成
var arr = Array("one","two","three");
arr[0] = new String();
alert(arr[0] instanceof String);//输出true,因为arr[0]现在是String类的一个实例.当然arr[0]现在的值是空字符串.
另外,还有一个要注意的地方,下面的代码是错误的.
var arr = Array("one","two","three");
alert(arr[0] instanceof string
);//instanceof比较的是类,而string是数据类型.
如果对象是null,那么instanceof返回false.
3.constructor
构造器constructor是所有javascript对象都有的一个属性,
var strval = "Thomas";
alert(strval.constructor == String);//返回true,这于instanceof不同.
很显然,instanceof是判断实例与类型之间的关系.而constructor判断的是对象调用的哪个构造器.
1.typeof
返回运算数的类型,有六种可能的结果:undefined,number,string,boolean,function和object.
var strval = "Thomas";
alert(typeof strval == 'string');
typeof是最基本的用法,但是它有个很要命的弱点,如果运算数的类型是自定义的或者是Array的,那返回的结果将
都是object.当然,typeof也有个好处,如果运算数未定义,那将返回undefined,而如果用constructor判断未定义
对象的类型,则会报错,因为constructor只能检查已定义变量的类型.
2.instanceof
返回一个 Boolean值,判断对象是否是指定类的一个实例.
需要注意的是下面的例子
var arr = Array("one","two","three");
alert(arr[0] instanceof String);//输出false,因为arr[0]的类型是string,它只是string类型的数据,而不是
String类型的对象.代码可以改成
var arr = Array("one","two","three");
arr[0] = new String();
alert(arr[0] instanceof String);//输出true,因为arr[0]现在是String类的一个实例.当然arr[0]现在的值是空字符串.
另外,还有一个要注意的地方,下面的代码是错误的.
var arr = Array("one","two","three");
alert(arr[0] instanceof string
);//instanceof比较的是类,而string是数据类型.
如果对象是null,那么instanceof返回false.
3.constructor
构造器constructor是所有javascript对象都有的一个属性,
var strval = "Thomas";
alert(strval.constructor == String);//返回true,这于instanceof不同.
很显然,instanceof是判断实例与类型之间的关系.而constructor判断的是对象调用的哪个构造器.
相关文章推荐
- javascript类型判断 typeof instanceof constructor
- typeof + instanceof+toString+constructor是如何判断javascript数据类型的
- javascript类型判断(typeof instanceof ,toStirng.call())
- js中判断一个对象的类型的方法typeof/constructor/instanceof
- typeof + instanceof+toString+constructor什么推理javascript数据类型
- 判断js中的类型:typeof / instanceof / constructor / prototype
- Javascript中typeof instanceof constructor的区别
- Javascript中数据类型及其判别方法(typeof instanceof Object.prototype.toSting.call(obj)的区别)
- 如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较
- Flex的四种判断对象类型的方式 as instanceof is typeof比较
- 推断js中的类型:typeof / instanceof / constructor / prototype
- JavaScript类型判断instanceof与typeof对比
- javaScript判断数据类型以及typeof和intanceof的差别
- js 判断各种数据类型 了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx) 如下实例:
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- js判断对象类型 typeof与Object.prototype.toString.call方法的区别
- JavaScript判断变量类型:typeof函数与constructor属性异同
- JavaScript判断变量类型:typeof函数与constructor属性异同
- 判断数据类型:typeof和instanceof