浅谈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 相关文章推荐
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
详谈DOM简介及节点、属性、查找节点的方法
Nov 16 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
使用JavaScript保存文本文件到本地的两种方法
Jan 22 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
微信小程序实现吸顶特效
Jan 08 Javascript
vue实现整屏滚动切换
Jun 29 Javascript
Vue常用API、高级API的相关总结
Feb 02 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启用zlib压缩文件的配置方法
2013/06/12 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
php动态函数调用方法
2015/05/21 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
详解python 爬取12306验证码
2019/05/10 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
2014年社区妇联工作总结
2014/12/02 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers