Javascript typeof与instanceof的区别


Posted in Javascript onOctober 18, 2016

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:

typeof

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。

它返回值是一个字符串,该字符串说明运算数的类型。typeof 一般只能返回如下几个结果:
number,boolean,string,function,object,undefined。我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

instanceof

instance:实例,例子

a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假

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) 会返回

谈到 instanceof 我们要多插入一个问题,就是 function 的 arguments,我们大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。

另外:

测试 var a=new Array();if (a instanceof Object) alert('Y');else alert('N');

得'Y'

但 if (window instanceof Object) alert('Y');else alert('N');

得'N'

所以,这里的 instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。

使用 typeof 会有些区别

alert(typeof(window)) 会得 object

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
JS获取地址栏参数的两种方法(简单实用)
Jun 14 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
js实现楼层导航功能
Feb 23 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
JavaScript实现简单贪吃蛇效果
Mar 09 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
vue实现简单的登录弹出框
Oct 26 Javascript
javascript self对象使用详解
Oct 18 #Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 #Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 #Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 #Javascript
vue.js表格分页示例
Oct 18 #Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 #Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 #Javascript
You might like
一个程序下载的管理程序(三)
2006/10/09 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
PDO::inTransaction讲解
2019/01/28 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
python求解数组中两个字符串的最小距离
2018/09/27 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
StringBuilder和String的区别
2015/05/18 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
教育局长自荐信范文
2013/12/22 职场文书
大学生找工作求职信
2014/07/09 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
资料员岗位职责
2015/02/10 职场文书
余世维讲座观后感
2015/06/11 职场文书
js之ajax文件上传
2021/05/13 Javascript
php将xml转化对象的实例详解
2021/11/17 PHP