浅谈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是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
原生JS实现表单checkbook获取已选择的值
Jul 21 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
vue loadmore 组件滑动加载更多源码解析
Jul 19 Javascript
微信小程序实现刷脸登录
May 25 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
详解Java中String JSONObject JSONArray List转换
Nov 13 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php eval函数一句话木马代码
2015/05/21 PHP
php字符串操作常见问题小结
2016/10/11 PHP
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
基于javascript的拖拽类封装详解
2019/04/19 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Python文件读写常见用法总结
2019/02/22 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python计算n的阶乘的方法代码
2019/10/25 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
python下载的库包存放路径
2020/07/27 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
2016十一国庆节感言
2015/12/09 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android