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插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
Nov 09 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
详解react-router如何实现按需加载
Jun 15 Javascript
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
使用angular-cli webpack创建多个包的方法
Oct 16 Javascript
GOJS+VUE实现流程图效果
Dec 01 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写的AES加密解密类分享
2014/06/20 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
canvas知识总结
2017/01/25 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
基于javaScript的this指向总结
2017/07/22 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
js实现随机数小游戏
2019/06/28 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python实现超简单端口转发的方法
2015/03/13 Python
python 中的int()函数怎么用
2017/10/17 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
python实现决策树
2017/12/21 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
领导检查欢迎词
2014/01/14 职场文书
党员岗位承诺书
2014/03/25 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP