JS typeof与instanceof的区别

typeof 与 instanceof 通常是用来判断一个变量的类型,二者有如下区别:

typeof:

判断一个变量的类型,返回值是字符串形式,返回结果有如下几种:

number,boolean,string,function,object,undefined

当一个变量a未声明,或者声明但未赋值时,typeof a的结果是undefined:

if(typeof a!="undefined")

{

  alert("ok")

}

很多前辈喜欢使用if(a)这种写法也是可以的,但是要确保a已经声明,否则会报错

 

instanceof:

常用于面向对象编程中,用于判断一个变量是否为某个类或者对象的实例,如:

例1)

var a=new Array();

alert(a instanceof Array);//结果是true

例2)

function Person(){};

var a=new Person();

alert(a instanceof Person);//结果是true

 

另外:

在使用typeof时,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,注意这个坑

使用instanceof时,

var a=new Array();

alert(a instanceof Object);//true, 因为Array是object的子类

 

对于一个特殊的对象window:

typeof(window) 的结果是true

window instanceof Object    在高级浏览器下,结果是true, 但在IE8及以下浏览器,结果是false

 

posted @ 2016-08-18 12:20  博客园小G  阅读(276)  评论(0编辑  收藏  举报