博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typeof和instanceof的区别
阅读量:6839 次
发布时间:2019-06-26

本文共 1099 字,大约阅读时间需要 3 分钟。

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:

typeof ----判断变量的类型 返回字符串值 简单实用 有局限性 (自定义对象 Array对象 和 dom元素都返回object)

instanceof ----判断是否为某个类的实例 返回逻辑值

constructor ----判断构造函数是哪个  返回构造函数 比较精确

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) 会返回 true

谈到 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');}

得'Y'

转载地址:http://gemkl.baihongyu.com/

你可能感兴趣的文章
Commonly Hacked Ports
查看>>
一段话系列-QPS、TPS、PV是很么如何计算
查看>>
java关键字和保留字整合(不定期补充) 转自小码哥
查看>>
Log4J日志配置详解
查看>>
Exchange日常管理之二十二:配置保留策略
查看>>
数据库原理 - 序列5 - 事务是如何实现的? - Undo Log解析
查看>>
【笔记】与Android酱的第一周
查看>>
最先进数据中心都建在哪?
查看>>
一个jsp内嵌一个jsp
查看>>
将用户添加至sudoers列表
查看>>
MySQL用户管理、常用sql语句、数据库备份
查看>>
Redis持久化实践及数据恢复
查看>>
分享一个java对xml,excel,jdbc.properties,读写文件,读写图片等实现(1)
查看>>
ApacheBench-web性能测试
查看>>
Python(四)字符串
查看>>
Git命令集十五——拉取命令
查看>>
【大数据】分布式计算
查看>>
Linux文件查找
查看>>
mysql-atlas安装及使用教程
查看>>
IP地址的划分和配置路由
查看>>