0
点赞
收藏
分享

微信扫一扫

(Java高级教程)第三章Java网络编程-第七节2:Servlet API和综合案例

一、typeof

typeof 是一个一元操作符不是函数,所以不需要传递参数,使用方法非常简单:typeof A

对于基本类型

对于引用类型

对于NULL类型

 虽然typeof null为object,但这只是JavaScript 存在的一个悠久 Bug,不代表null就是引用数据类型,并且null本身也不是对象

对于函数类型

对于日期类型

对于正则类型

对于包装类型 

使用new操作符,除Function外的所有构造函数的类型都是object。 

二、instanceof 

instance中文翻译为实例,instanceof就是判断该对象是谁的实例。与typeof不同,它返回布尔值。

instanceof是对象运算符

instanceof的判断就是根据原型链进行搜寻,在对象obj1的原型链上如果存在另一个对象obj2的原型属性,那么表达式(obj1 instanceof obj2)返回值为true;否则返回false。

所以:

 因为sss nnn bbb是原始值,而不是通过包装函数生成的实例。

 正则和函数也一样

如果是作用在自己定义的构造函数呢?

benz是实例不是构造函数所以:

再来个构造函数:

再来个奇葩的

instanceof检测null和undefined :

 

三、总结 区别

  1. typeof会返回一个变量的基本类型,instanceof返回的是一个布尔值
  2. typeof是一元运算符 instanceof是对象运算符
  3. typeof 更合适判断基本类型,对引用类型、构造函数的实例对象以及null无法判断出准确类型
    instanceof 用于判断实例对象是否是某一构造函数的实例化对象,从而判处该对象所属的类型。 这种方式是通过原型链查找。
举报

相关推荐

0 条评论