浅谈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 源码分析笔记(7) Queue
Jun 19 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
编写简单的jQuery提示插件
Dec 21 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
JS中递归函数
Jun 17 Javascript
AngularJs  E2E Testing 详解
Sep 02 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
微信小程序 button样式设置为图片的方法
Jun 19 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
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python实现定时播放mp3
2015/03/29 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python得到单词模式的示例
2018/10/15 Python
迪奥美国官网:Dior美国
2019/12/07 全球购物
班子成员四风问题自我剖析材料
2014/09/29 职场文书
九寨沟导游词
2015/02/02 职场文书
工会经费申请报告
2015/05/15 职场文书
焦点访谈观后感
2015/06/11 职场文书
海底两万里读书笔记
2015/06/26 职场文书
《落花生》教学反思
2016/02/16 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python
git stash(储藏)的用法总结
2022/06/25 Servers