浅谈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 相关文章推荐
js onpropertychange输入框 事件获取属性
Mar 26 Javascript
jquery ui对话框实例代码
May 10 Javascript
js 动态加载事件的几种方法总结
Dec 25 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
jquery validate表单验证插件
Sep 06 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
vue-cli2.9.3 详细教程
Apr 23 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
详解jenkins自动化部署vue
May 14 Javascript
原生js无缝轮播插件使用详解
Mar 09 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
php str_replace替换指定次数的方法详解
2017/05/05 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
浅析Ajax语法
2016/12/05 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python实现排序算法解析
2018/09/08 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python+tkinter实现学生管理系统
2019/08/20 Python
python django生成迁移文件的实例
2019/08/31 Python
Django框架 信号调度原理解析
2019/09/04 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
python如何随机生成高强度密码
2020/08/19 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
网络信息管理员岗位职责
2014/01/05 职场文书
初中语文教学反思
2014/02/02 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript