2008-04-03
JS中的instanceof和typeof
对于instanceof和typeof,以前偶尔的用到过,特别是typeof用到的相对更多一些,今日研究ext源码,很多地方都用到了instanceof,突然觉得他们两个有些相似但也应该有他们区别,网上看了一些文章,对它们之间的关系有了一定的了解。
注:
在使用typeof運算符時,採用引用類型存儲值會出現一個問題,無論引用的是什麼類型的對象,它都會返回 "object". 所以JavaScript引入了另一個Java運算符 instanceof 來解決這個問題。
instanceof 與 typeof 都用於識別正在處理的對象類型,與typeof不同的是,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对象,尽管看起来很像。
注:
在使用typeof運算符時,採用引用類型存儲值會出現一個問題,無論引用的是什麼類型的對象,它都會返回 "object". 所以JavaScript引入了另一個Java運算符 instanceof 來解決這個問題。
instanceof 與 typeof 都用於識別正在處理的對象類型,與typeof不同的是,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对象,尽管看起来很像。
- 17:29
- 浏览 (140)
- 评论 (0)
- 分类: JavaScript
- 相关推荐
发表评论
- 浏览: 23145 次
- 性别:


- 详细资料
搜索本博客
我的相册
ss
共 8 张
共 8 张
最近加入圈子
最新评论
-
关于延迟加载(lazy)和强 ...
执行上面代码的时候报了一个session已经关闭的错误~ 有解决办法吗?
-- by angushj -
关于延迟加载(lazy)和强 ...
我测试的发现即使改成 lazy="true"也会自动加载,反而 去掉这个设置用默 ...
-- by wilddonkey -
FCKeditor编辑器的最简单 ...
8) :cry: :wink: :roll: ...
-- by xmf483 -
XP如何解决开发过程中的风 ...
XP -- 极限编程的意思
-- by kenbli -
XP如何解决开发过程中的风 ...
XP是什么?
-- by senbao18






评论排行榜