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代码
Mar 10 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
Nov 05 Javascript
js 自动播放的实例代码
Nov 19 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
JS组件Bootstrap实现图片轮播效果
May 16 Javascript
原生JS实现匀速图片轮播动画
Oct 18 Javascript
bootstrap手风琴制作方法详解
Jan 11 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 Javascript
vue项目中使用fetch的实现方法
Apr 25 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
Nov 06 Javascript
javascript History对象原理解析
Feb 17 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
举例详解Python中yield生成器的用法
2015/08/05 Python
Python数据类型详解(二)列表
2016/05/08 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
java判断三位数的实例讲解
2019/06/10 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
销售演讲稿范文
2014/01/08 职场文书
奠基仪式主持词
2014/03/20 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
大学生自荐书范文
2015/03/05 职场文书
健康教育主题班会
2015/08/14 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers