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的区别相关推荐

  1. 12 java中instanceof运算符的意义和用法

    java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...

  2. JavaScript中delete运算符

    JavaScript中delete运算符是 从对象中删除一个属性,或从数组中删除一个元素. 使用方法: delete expressionwww.mlybyby.com expression 参数是一 ...

  3. 详解 javascript中offsetleft属性的用法(转)

    详解 javascript中offsetleft属性的用法 转载  2015-11-11   投稿:mrr    我要评论 本章节通过代码实例介绍一下offsetleft属性的用法,需要的朋友可以做一 ...

  4. javaScript 中 call 函数的用法说明

    javaScript 中 call 函数的用法说明 javaScript 中的 call() 是一个奇妙的方法,但也是一个让人迷惑的方法,先看一下官方的解释: call 方法 请参阅 应用于:Func ...

  5. JS/JavaScript中两个等号 == 和 三个等号 === 的区别

    JavaScript中两个等号 == 和 三个等号 === 的区别 一.概念 == 和 ===  (1)  "=="叫做相等运算符,"==="叫做严格运算符. ...

  6. 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别

    今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...

  7. JavaScript中String的slice(),substr(),substring()三者区别

    JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...

  8. JavaScript中的ReferenceError和TypeError两种错误的区别

    转自JavaScript中的ReferenceError和TypeError两种错误的区别 作为前端工作人员,在调试JavaScript程序的时候经常遇到两个错误:ReferenceError和Typ ...

  9. JavaScript中的运算符和语句

    一.JavaScript的运算符 a.基本的算术运算符(+.-.*./.%) -.*./.%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN. ...

最新文章

  1. [翻译]自动维护索引重新生成组织的SQL批处理语句
  2. /etc/rc.d 与 /etc/profile或者./.bash_profile的区别
  3. 爬虫学习笔记(二十四)—— pyspider框架
  4. BZOJ 3156: 防御准备( dp + 斜率优化 )
  5. 论文小综 | Neuro-Symbolic Reasoning in NLP
  6. linux文件编辑命令详细整理,Linux文件编辑命令vi详细说明
  7. CNN和FCN的区别
  8. 常见的排序算法四——直接选择排序
  9. 【Android开发艺术探索】RemoteViews
  10. 基于嵌入式linux的设计与实现,基于嵌入式Linux图片浏览器的设计与实现
  11. 2022电工(技师)考试题库模拟考试平台操作
  12. 在不被限制的前提下,企业微信一天加多少好友(主动+被动)
  13. java日常基础知识
  14. 阅读笔记--现代操作系统
  15. 视频直播系统源码,平台在日间和夜间模式之间来回切换
  16. ios手机 苹果手机 在小程序里面长按图片 后 点击事件失效问题
  17. 【Chips】VLSI Final Project:小型卷积核单元设计 项目总结
  18. 【转载学习】Ceph新长支持稳定版本Luminous(12.x.x)新功能总结
  19. 什么是WHQL微软徽标认证?为什么需要这项认证?
  20. 学术论文录用结果通知(Notification)

热门文章

  1. [转]Chrome 控制台console的用法
  2. MySQL 记录中包含换行符
  3. HDU 1848 Fibonacci again and again
  4. asp net code
  5. 利用Python如何实现数据驱动的接口自动化测试
  6. 杭电多校(三)2019.7.29--暑假集训
  7. POJ 3237.Tree -树链剖分(边权)(边值更新、路径边权最值、区间标记)贴个板子备忘...
  8. 图论数学:矩阵树定理
  9. 使用mac 终端利用alias设置快捷命令
  10. [Android] TableLayout