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 相关文章推荐
jQuery 浮动广告实现代码
Dec 25 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
Jan 28 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
javascript数据类型示例分享
Jan 19 Javascript
javascript实现可全选、反选及删除表格的方法
May 15 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
Dec 08 Javascript
jQuery给表格添加分页效果
Mar 02 Javascript
JSON的parse()方法介绍
Jan 31 Javascript
vue+element+Java实现批量删除功能
Apr 08 Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 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控制网页过期时间的代码
2008/09/28 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php发送post请求的三种方法
2014/02/11 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php中chdir()函数用法实例
2014/11/13 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
在Django中同时使用多个配置文件的方法
2015/07/22 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
中学教师岗位职责
2013/11/26 职场文书
工作失职检讨书
2015/01/26 职场文书
音乐教师个人总结
2015/02/06 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
python实现MD5进行文件去重的示例代码
2021/07/09 Python