浅谈javascript中的instanceof和typeof


Posted in Javascript onFebruary 27, 2015

对于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对象,尽管看起来很像。

Javascript 相关文章推荐
两个DIV等高的JS的实现代码
Dec 23 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
Angular2 多级注入器详解及实例
Oct 30 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
jQuery操作元素追加内容示例
Jan 10 jQuery
js实现有时间限制消失的图片方法
Feb 27 #Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 #Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 #Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 #Javascript
JavaScript中Function详解
Feb 27 #Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 #Javascript
js实现鼠标触发图片抖动效果的方法
Feb 27 #Javascript
You might like
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
php计算十二星座的函数代码
2012/08/21 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
thinkphp分页集成实例
2017/07/24 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
大学生职业生涯规划范文
2014/01/22 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
如何撰写促销方案?
2019/07/05 职场文书
html粘性页脚的具体使用
2022/01/18 HTML / CSS
Python循环之while无限迭代
2022/04/30 Python
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers