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 相关文章推荐
Array.prototype.slice.apply的使用方法
Mar 17 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
把jQuery的类、插件封装成seajs的模块的方法
Mar 12 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
Sep 03 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
Aug 04 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
JS实现的简单下拉框联动功能示例
May 11 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
第四节--构造函数和析构函数
2006/11/16 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现Zabbix-API监控
2018/09/17 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Python模块的制作方法实例分析
2019/12/21 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
PHP经典面试题
2016/09/03 面试题
护士实习自我鉴定
2013/10/22 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
场地使用证明模板
2014/10/25 职场文书
商务代表岗位职责
2015/02/15 职场文书
物业保安辞职信
2015/05/12 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
节水宣传标语口号
2015/12/26 职场文书