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 相关文章推荐
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
javascript写的异步加载js文件函数(支持数组传参)
Jun 07 Javascript
使用Browserify配合jQuery进行编程的超级指南
Jul 28 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
JavaScript数值类型知识汇总
Nov 17 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 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相关资料
2006/10/09 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
python类继承用法实例分析
2015/05/27 Python
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python for循环remove同一个list过程解析
2019/08/14 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
王老吉广告词
2014/03/20 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
培训科主任岗位职责
2014/08/08 职场文书
齐云山导游词
2015/02/06 职场文书
初一英语教学反思
2016/02/15 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
MySQL数据库完全卸载的方法
2022/03/03 MySQL