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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
javascript 清空form表单中某种元素的值
Dec 26 Javascript
Jquery之美中不足小结
Feb 16 Javascript
页面使用密码保护代码
Apr 10 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
node模块机制与异步处理详解
Mar 13 Javascript
js实现的简练高效拖拽功能示例
Dec 21 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
node实现简单的增删改查接口实例代码
Aug 22 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
CI框架常用函数封装实例
2016/11/21 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
Python基础入门之seed()方法的使用
2015/05/15 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python八皇后问题的解决方法
2018/09/27 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python中Selenium模块的使用详解
2020/10/09 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
股权收购意向书
2014/04/01 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
张思德观后感
2015/06/09 职场文书
交通安全温馨提示语
2015/07/14 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
sql字段解析器的实现示例
2021/06/23 SQL Server
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python