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 继承详解(四)
Jul 13 Javascript
jQuery动画特效实例教程
Aug 29 Javascript
JavaScript中发布/订阅模式的简单实例
Nov 05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
Mar 30 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
在JavaScript中实现链式调用的实现
Dec 24 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
使用图灵api创建微信聊天机器人
2015/07/23 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
js的回调函数详解
2015/01/05 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Python实现list反转实例汇总
2014/11/11 Python
python机器学习实战之K均值聚类
2017/12/20 Python
pandas分区间,算频率的实例
2019/07/04 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
基于Python实现天天酷跑功能
2021/01/06 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
医院门卫岗位职责
2013/12/30 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
物流管理专业自荐信
2014/06/23 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
六一儿童节致辞
2015/07/31 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
JS数组去重详情
2021/11/07 Javascript