JS中typeof与instanceof之间的区别总结


Posted in Javascript onNovember 14, 2013

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 相关文章推荐
页面中iframe相互传值传参
Dec 13 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
JS中创建函数的三种方式及区别
Mar 13 Javascript
微信小程序 图片边框解决方法
Jan 16 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 Javascript
JS实现小米轮播图
Sep 21 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 #Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 #Javascript
浅析用prototype定义自己的方法
Nov 14 #Javascript
Js nodeType 属性全面解析
Nov 14 #Javascript
open 动态修改img的onclick事件示例代码
Nov 13 #Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 #Javascript
js获取IFRAME当前的URL的方法
Nov 13 #Javascript
You might like
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php 分库分表hash算法
2009/11/12 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
用python写的一个wordpress的采集程序
2016/02/27 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
pandas中Timestamp类用法详解
2017/12/11 Python
python实现顺序表的简单代码
2018/09/28 Python
Python异常的检测和处理方法
2018/10/26 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
2014年个人年终总结
2015/03/09 职场文书
新闻稿怎么写
2015/07/18 职场文书
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server