JavaScript中instanceof运算符的用法以及和typeof的区别
instanceof : 判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型栗子①:
var aColors = ["red", "green", "blue"]; alert(typeof aColors[0]); //"string" alert(aColors[0] instanceof String); //"false"alert(aColors instanceof Array); //true
你要区分string 与 String的区别 , aColors[0] 是 string值类型, 当然不是String的实例啦。
参考下面代码
var aColors = ["red", "green", "blue"]; aColors[0]= new String("1") alert(typeof aColors[0]); //output "Object" alert(aColors[0] instanceof String); //output "true";
instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
typeof:用以获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){},而不要去使用if(a)因为如果a不存在(未声明)则会出错,对于Array,Null等特殊对象使用typeof 一律返回object,这正是typeof的局限性。
如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。
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
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
年轻的时候,少说废话,多做事。
摘自:http://www.jb51.net/article/22717.htm
转载于:https://www.cnblogs.com/yuqingfamily/p/5792259.html
JavaScript中instanceof运算符的用法以及和typeof的区别相关推荐
- 12 java中instanceof运算符的意义和用法
java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...
- JavaScript中delete运算符
JavaScript中delete运算符是 从对象中删除一个属性,或从数组中删除一个元素. 使用方法: delete expressionwww.mlybyby.com expression 参数是一 ...
- 详解 javascript中offsetleft属性的用法(转)
详解 javascript中offsetleft属性的用法 转载 2015-11-11 投稿:mrr 我要评论 本章节通过代码实例介绍一下offsetleft属性的用法,需要的朋友可以做一 ...
- javaScript 中 call 函数的用法说明
javaScript 中 call 函数的用法说明 javaScript 中的 call() 是一个奇妙的方法,但也是一个让人迷惑的方法,先看一下官方的解释: call 方法 请参阅 应用于:Func ...
- JS/JavaScript中两个等号 == 和 三个等号 === 的区别
JavaScript中两个等号 == 和 三个等号 === 的区别 一.概念 == 和 === (1) "=="叫做相等运算符,"==="叫做严格运算符. ...
- 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别
今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...
- JavaScript中String的slice(),substr(),substring()三者区别
JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...
- JavaScript中的ReferenceError和TypeError两种错误的区别
转自JavaScript中的ReferenceError和TypeError两种错误的区别 作为前端工作人员,在调试JavaScript程序的时候经常遇到两个错误:ReferenceError和Typ ...
- JavaScript中的运算符和语句
一.JavaScript的运算符 a.基本的算术运算符(+.-.*./.%) -.*./.%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN. ...
最新文章
- [翻译]自动维护索引重新生成组织的SQL批处理语句
- /etc/rc.d 与 /etc/profile或者./.bash_profile的区别
- 爬虫学习笔记(二十四)—— pyspider框架
- BZOJ 3156: 防御准备( dp + 斜率优化 )
- 论文小综 | Neuro-Symbolic Reasoning in NLP
- linux文件编辑命令详细整理,Linux文件编辑命令vi详细说明
- CNN和FCN的区别
- 常见的排序算法四——直接选择排序
- 【Android开发艺术探索】RemoteViews
- 基于嵌入式linux的设计与实现,基于嵌入式Linux图片浏览器的设计与实现
- 2022电工(技师)考试题库模拟考试平台操作
- 在不被限制的前提下,企业微信一天加多少好友(主动+被动)
- java日常基础知识
- 阅读笔记--现代操作系统
- 视频直播系统源码,平台在日间和夜间模式之间来回切换
- ios手机 苹果手机 在小程序里面长按图片 后 点击事件失效问题
- 【Chips】VLSI Final Project:小型卷积核单元设计 项目总结
- 【转载学习】Ceph新长支持稳定版本Luminous(12.x.x)新功能总结
- 什么是WHQL微软徽标认证?为什么需要这项认证?
- 学术论文录用结果通知(Notification)
热门文章
- [转]Chrome 控制台console的用法
- MySQL 记录中包含换行符
- HDU 1848 Fibonacci again and again
- asp net code
- 利用Python如何实现数据驱动的接口自动化测试
- 杭电多校(三)2019.7.29--暑假集训
- POJ 3237.Tree -树链剖分(边权)(边值更新、路径边权最值、区间标记)贴个板子备忘...
- 图论数学:矩阵树定理
- 使用mac 终端利用alias设置快捷命令
- [Android] TableLayout