javascript类型判断 typeof instanceof constructor

由于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判断的是对象调用的哪个构造器.


总结:typeof 是对js基本数据类型的判断

            instance of 是判断实例与类关系的判断

           constructor 是判断实例与构造函数关系的判断


转载地址:http://blog.csdn.net/tengyang11/article/details/6461701

你可能感兴趣的:(javascript类型判断 typeof instanceof constructor)