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 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
jquery UI 1.72 之datepicker
Dec 29 Javascript
WEB高性能开发之疯狂的HTML压缩
Jun 19 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
Jan 09 Javascript
JS 打印功能代码可实现打印预览、打印设置等
Oct 31 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
php 修改密码实现代码
May 24 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 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
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
横向对比分析Python解析XML的四种方式
2016/03/30 Python
python3 读写文件换行符的方法
2018/04/09 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
基于python监控程序是否关闭
2020/01/14 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
JNI的定义
2012/11/25 面试题
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
置业顾问岗位职责
2014/03/02 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
导游词之崇武古城
2019/10/07 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
python数据处理之Pandas类型转换
2022/04/28 Python
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers