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 相关文章推荐
Prototype源码浅析 String部分(二)
Jan 16 Javascript
裁剪字符串trim()自定义改进版
Apr 10 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
requireJS使用指南
Apr 27 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
Jan 13 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 Javascript
Vue-cli项目部署到Nginx服务器的方法
Nov 01 Javascript
JS数据类型STRING使用实例解析
Dec 18 Javascript
JavaScript中window和document用法详解
Jul 28 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 表单提交给自己
2008/07/24 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
创先争优制度
2014/01/21 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技
2022年显卡天梯图(6月更新)
2022/06/17 数码科技