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 学习笔记 错误处理
Jul 30 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
JavaScript中标识符提升问题
Jun 11 Javascript
js实现简单秒表走动的时钟特效
Mar 25 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
JS中的作用域链
Mar 01 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
Jul 30 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
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
PHP clearstatcache()函数详解
2010/03/02 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
python 实现兔子生兔子示例
2019/11/21 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
用python制作个视频下载器
2021/02/01 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
购房公证委托书(2014版)
2014/09/12 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
幼师小班个人总结
2015/02/12 职场文书
2015政治思想表现评语
2015/03/25 职场文书
宣传委员竞选稿
2015/11/19 职场文书