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 相关文章推荐
javascript 对象定义方法 简单易学
Mar 22 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
JS对象与JSON格式数据相互转换
Feb 20 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
Dec 01 Javascript
如何基于js判断浏览器版本
Feb 20 Javascript
nuxt静态部署打包相对路径操作
Nov 06 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php Undefined index的问题
2009/06/01 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PHP中overload与override的区别
2017/02/13 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python计算一个文件里字数的方法
2015/06/15 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python读取和保存视频文件
2018/04/16 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
租房合同协议书
2014/04/09 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
倡议书格式模板
2014/05/13 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
业务员岗位职责范本
2015/04/03 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
办公室管理规章制度
2015/08/04 职场文书
小学学习委员竞选稿
2015/11/20 职场文书