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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值