JS中typeof与instanceof之间的区别总结


Posted in Javascript onNovember 14, 2013

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 相关文章推荐
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
jQuery validata插件实现方法
Jun 25 jQuery
jQuery回调方法使用示例
Jun 26 jQuery
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
layui中的switch开关实现方法
Sep 03 Javascript
javascript sort()对数组中的元素进行排序详解
Oct 13 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
Aug 07 Javascript
vue 导出文件,携带请求头token操作
Sep 10 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 #Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 #Javascript
浅析用prototype定义自己的方法
Nov 14 #Javascript
Js nodeType 属性全面解析
Nov 14 #Javascript
open 动态修改img的onclick事件示例代码
Nov 13 #Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 #Javascript
js获取IFRAME当前的URL的方法
Nov 13 #Javascript
You might like
第七节 类的静态成员 [7]
2006/10/09 PHP
Email+URL的判断和自动转换函数
2006/10/09 PHP
php抓即时股票信息
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
用ADODB.Stream转换
2007/01/22 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
阿里云:Aliyun.com
2017/02/15 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
市场开发与营销专业求职信
2013/12/31 职场文书
中学生差生评语
2014/01/30 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript