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 相关文章推荐
JS继承--原型链继承和类式继承
Apr 08 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
Apr 20 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
跟我学习javascript的循环
Nov 18 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 Javascript
JQuery实现图片轮播效果
May 08 jQuery
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
video.js 一个页面同时播放多个视频的实例代码
Nov 27 Javascript
vue 搭建后台系统模块化开发详解
May 01 Javascript
搭建vscode+vue环境的详细教程
Aug 31 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
10个php函数实用却不常见
2015/10/13 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python中的colorlog库使用详解
2019/07/05 Python
Python实现微信机器人的方法
2019/09/06 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
pycharm永久激活超详细教程
2020/10/29 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
作风建设年活动总结
2014/08/27 职场文书
政府个人对照检查材料
2014/08/28 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python