浅谈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 相关文章推荐
基于jQuery的星级评分插件
Aug 12 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
Jun 04 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
Aug 21 Javascript
jQuery实现简易的天天爱消除小游戏
Oct 16 Javascript
JavaScript Date对象详解
Mar 01 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
vue-cli配置文件——config篇
Jan 04 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
AngularJs分页插件使用详解
Jun 30 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
May 13 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
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
Email+URL的判断和自动转换函数
2006/10/09 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python代码制作configure文件示例
2014/07/28 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
美国最大点评网站:Yelp
2018/02/14 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
行政前台岗位职责
2013/12/04 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
教师师德承诺书2016
2016/03/25 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android