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 相关文章推荐
用javascript获得地址栏参数的两种方法
Nov 08 Javascript
Javascript 类与静态类的实现
Apr 01 Javascript
jquery中ajax调用json数据的使用说明
Mar 17 Javascript
jsonp原理及使用
Oct 28 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
Vue实现导出excel表格功能
Mar 30 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
基于JS实现table导出Excel并保留样式
May 19 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
浅谈TypeScript 索引签名的理解
Oct 16 Javascript
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
PHP个人网站架设连环讲(一)
2006/10/09 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
PHP反射学习入门示例
2019/06/14 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
传媒专业推荐信范文
2013/11/23 职场文书
项目采购员岗位职责
2014/04/15 职场文书
党员承诺书怎么写
2014/05/20 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
校园开放日新闻稿
2015/07/17 职场文书
《社戏》教学反思
2016/02/22 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android