instanceof和typeof

我摘别人的:
对于instanceof和typeof,之前偶尔的用到过,特别是typeof用到的相对更多一些,今日研究ext源码,不少地方都用到了instanceof,忽然以为他们两个有些类似但也应该有他们区别,网上看了一些文章,对它们之间的关系有了必定的了解。

instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
typeof用以获取一个变量的类型,typeof通常只能返回以下几个结果: number,boolean,string,function,object,undefined。咱们能够使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){},而不要去使用if(a)由于若是a不存在(未声明)则会出错,对于Array,Null等特殊对象使用typeof一概返回object,这正是typeof的局限性。 若是咱们但愿获取一个对象是不是数组,或判断某个变量是不是某个对象的实例则要选择使用instanceof。instanceof用于判断一个变量是否某个对象的实例,如var a=new Array();alert(a instanceof Array);会返回true,同时alert(a instanceof Object)也会返回true;这是由于Array是object的子类。再如:function test(){};var a=new test();alert(a instanceof test)会返回true。 谈到instanceof咱们要多插入一个问题,就是function的arguments,咱们你们也许都认为arguments是一个Array,但若是使用instaceof去测试会发现arguments不是一个Array对象,尽管看起来很像。
相关文章
相关标签/搜索