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 相关文章推荐
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 Javascript
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 Javascript
作为老司机使用 React 总结的 11 个经验教训
Apr 08 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
JS三级联动代码格式实例详解
Dec 30 Javascript
javascript实现滚动条效果
Mar 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
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
js实现列表按字母排序
2020/08/11 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
实例Python处理XML文件的方法
2015/08/31 Python
python的变量与赋值详细分析
2017/11/08 Python
Python之字典添加元素的几种方法
2020/09/30 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
区三好学生主要事迹
2014/01/30 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
病媒生物防治方案
2014/05/13 职场文书
技术经济专业求职信
2014/09/03 职场文书
无犯罪记录证明
2014/09/19 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL