浅谈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 相关文章推荐
css把超出的部分显示为省略号的方法兼容火狐
Jul 23 Javascript
一些常用的JS功能函数(2009-06-04更新)
Jun 04 Javascript
javascript 页面划词搜索JS
Sep 28 Javascript
javascript 四则运算精度修正函数代码
May 31 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 Javascript
angularJS中router的使用指南
Feb 09 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
Jun 18 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
JavaScript实现省市联动效果
Nov 22 Javascript
jquery添加div实现消息聊天框
Feb 08 jQuery
如何用JS模拟实现数组的map方法
Jul 30 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 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
小学生元旦广播稿
2014/02/21 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
企业年会祝酒词
2015/08/11 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
springboot读取nacos配置文件
2022/05/20 Java/Android