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中的new的使用方法与注意事项
May 16 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
各种常用的JS函数整理
Oct 25 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
微信小程序实现登录注册功能
Dec 29 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php FPDF类库应用实现代码
2009/03/20 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
微信支付开发发货通知实例
2016/07/12 PHP
javascript重写alert方法的实例代码
2013/03/29 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
基于Python os模块常用命令介绍
2017/11/03 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
基于Python log 的正确打开方式
2018/04/28 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python箱型图处理离群点的例子
2019/12/09 Python
Python如何定义有默认参数的函数
2020/08/10 Python
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
华为慧通面试题
2012/09/11 面试题
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
音乐会主持人开场白
2015/05/28 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技