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温习篇 强大的JQuery选择器
Apr 24 Javascript
javaScript checkbox 全选/反选及批量删除
Apr 28 Javascript
jQuery 获取对象 定位子对象
May 31 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
node.js中的fs.write方法使用说明
Dec 15 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
layui table 参数设置方法
Aug 14 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 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+mysql事务rollback&commit示例
2010/02/08 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
公积金单位接收函
2014/01/11 职场文书
党员教师一句话承诺
2014/05/30 职场文书
美术教师个人总结
2015/02/06 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
婚宴新娘致辞
2015/07/28 职场文书
Django如何与Ajax交互
2021/04/29 Python