浅谈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 toggle()设置CSS样式
Nov 05 Javascript
JQuery实现简单验证码提示解决方案
Dec 20 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
js和jquery使按钮失效为不可用状态的方法
Jan 26 Javascript
AngularJS入门教程之过滤器详解
Aug 19 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
jQuery is not defined 错误原因与解决方法小结
Mar 19 Javascript
JS实现的集合去重,交集,并集,差集功能示例
Mar 13 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 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
mayfish 数据入库验证代码
2010/04/30 PHP
深入PHP FTP类的详解
2013/06/13 PHP
PHP页面中文乱码分析
2013/10/29 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
Vue实现简易计算器
2020/02/25 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
Python选课系统开发程序
2016/09/02 Python
Python解惑之整数比较详解
2017/04/24 Python
对python的文件内注释 help注释方法
2018/05/23 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
python 利用zmail库发送邮件
2020/09/11 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
九州传奇上机题
2014/07/10 面试题
销售找工作求职信
2013/12/20 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
应届大专生自荐书
2014/06/16 职场文书
党员四风剖析材料
2014/08/27 职场文书
店铺转让协议书
2014/12/02 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏