浅谈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的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
js实现一个省市区三级联动选择框代码分享
Mar 06 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
jQuery调用Webservice传递json数组的方法
Aug 06 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
Aug 08 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
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中HTTP_REFERER函数用法实例
2014/11/21 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
jQuery参数列表集合
2011/04/06 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
Vuex提升学习篇
2018/01/11 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python实现测试磁盘性能的方法
2015/03/12 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
四年级下册教学反思
2014/02/01 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python