您的位置:首页 > Web前端 > JavaScript

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判断的是对象调用的哪个构造器.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐