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 使用手册(三)
Sep 23 Javascript
JavaScript 模拟用户单击事件
Dec 31 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
详解angularjs中如何实现控制器和指令之间交互
May 31 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 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
php之字符串变相相减的代码
2007/03/19 PHP
php下的权限算法的实现
2007/04/28 PHP
PHP 变量的定义方法
2010/01/26 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python实现用户管理系统
2018/01/10 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
大型营销活动计划书
2014/04/28 职场文书
文言文辞职信
2015/02/28 职场文书
药品开票员岗位职责
2015/04/15 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
2015年度企业工作总结
2015/05/21 职场文书
银行资信证明
2015/06/17 职场文书
小学教代会开幕词
2016/03/04 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
JS函数式编程实现XDM一
2022/06/16 Javascript