Javascript typeof与instanceof的区别


Posted in Javascript onOctober 18, 2016

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 toggle使用分析
Nov 16 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
js上传图片预览的实现方法
May 09 Javascript
Angular2安装angular-cli
May 21 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
通过一个简单的例子学会vuex与模块化
Nov 22 Javascript
vue实现文件上传功能
Aug 13 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
Sep 12 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 Javascript
javascript self对象使用详解
Oct 18 #Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 #Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 #Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 #Javascript
vue.js表格分页示例
Oct 18 #Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 #Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 #Javascript
You might like
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python显示生日是星期几的方法
2015/05/27 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python导入坐标点的具体操作
2019/05/10 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python循环实现n的全排列功能
2019/09/16 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
什么是URL
2015/12/13 面试题
竞选学生会主席演讲稿
2014/04/24 职场文书
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python