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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
异步加载script的代码
Jan 12 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 Javascript
nestjs返回给前端数据格式的封装实现
Feb 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
PHP 中的类
2006/10/09 PHP
从php核心代码分析require和include的区别
2011/01/02 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
php 浮点数比较方法详解
2017/05/05 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python字符串替换示例
2014/04/24 Python
win与linux系统中python requests 安装
2016/12/04 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python构建深度神经网络(续)
2018/03/10 Python
python文本数据相似度的度量
2018/03/12 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
Python里面如何实现tuple和list的转换
2012/06/13 面试题
预备党员政审材料
2014/02/04 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
妇联主席先进事迹
2014/05/18 职场文书
销售员岗位职责
2014/06/09 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
win10清理dns缓存
2022/04/19 数码科技