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 相关文章推荐
javascript 面向对象继承
Nov 26 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
PassWord输入框代码分享
Jun 07 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
Jun 12 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
js实现带箭头的进度流程
Mar 26 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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
vue.js绑定class和style样式(6)
2016/12/09 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
常见python正则用法的简单实例
2016/06/21 Python
Python进阶篇之字典操作总结
2016/11/16 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Python定时器线程池原理详解
2020/02/26 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
厂长岗位职责
2014/02/19 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
golang中的空接口使用详解
2021/03/30 Python