typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.语法为typeof(data) 或 typeof data

instanceof则为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型
语法为 o instanceof A

以下为综合实例:

1<script type="text/javascript">
 2<!–
 3alert("typeof(1):" + typeof(1));//number
 4alert("typeof(\"abc\"):" + typeof("abc"));//string
 5alert("typeof(true):" +typeof(true));//boolean
 6alert("typeof(2009-2-4):" + typeof(2009-2-4));//number
 7alert("typeof(\"2009-2-4\"):" + typeof("2009-2-4"));//string
 8alert("typeof(m):" + typeof(m));//undefined
 9var d=new Date();
10alert("typeof(d):" + typeof(d));//object
11function Person(){};
12alert("typeof(Person):" + typeof(Person));//function
13var a=new Array();
14alert("typeof(a):" + typeof(a));//object
15alert("a instanceof Array:" + (a instanceof Array));
16var h=new Person();
17var o={};
18alert("h instanceof Person:" + (h instanceof Person));//true
19alert("h instanceof Object:" + (h instanceof Object));//true
20alert("o instanceof Object:" + (o instanceof Object));//true
21alert(typeof(h));//object
22//–>
23</script>

js中constructor较少使用,如果不是搜索到相关construtor相关的资料,我之前从没有注意到js还有这个函数。

使用typeof的一个不好的地方就是它会把Array还有用户自定义函数都返回为object

1<script type="text/javascript">
2<!–
3var j=2;
4alert(typeof(j));//number
5alert("j.constructor:" + j.constructor);//function …
6alert(typeof(j.constructor));//function
7//–>
8</script>

可以看到js.constructor返回的是一些字符串,大家都应该能看到这是一个function类型,此例为Number()为Number对象的构造函数,Number()用于将其参数转换为数字number类型,并返回转换结果(若不能转换则返回 NaN)。

因此在以后的js判断数据类型时可以使用以下方式来得到其详细数据类型

1if((typeof o=="object") && (o.constructor==Number)){
2
3}

这里还要注意,constructor只能对已有变量进行判断,而typeof则可对未声明变量进行判断(返回undefined)。

详解js中typeof、instanceof与constructor相关推荐

  1. 详解js中的继承(一)

    详解js中的继承(一) 前言 准备知识 1.构造函数,实例 2.原型对象 3.构造函数,原型对象和实例的关系 继承 原型链 小结 前言 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我 ...

  2. php js实现流程图,详解js中构造流程图的核心技术JsPlumb(2)_javascript技巧

    前言:上篇详解js中构造流程图的核心技术JsPlumb介绍了下JsPlumb在浏览器里面画流程图的效果展示,以及简单的JsPlumb代码示例.这篇还是接着来看看各个效果的代码说明. 一.设置连线的样式 ...

  3. 详解JS中的Object

    详解 JS 中的 Object 从本质上看,Object 是一个构造函数,用于创建对象. 一.Object 构造函数的属性 在 Object 中声明的属性只有两个: Object.length -- ...

  4. 详解JS中的原型与继承

    每当我们提起原型链时不免会想到原型对象,对象的原型,还有众多的继承方式.于是prototype.[[prototype]].constructor等等难免在头脑中打架. 然而原型其实并不是什么高大上的 ...

  5. html中隐式转换成数字,详解JS中的隐式类型转换

    JS中隐式类型转换 JS中的数据类型 JS中的数据类型分为两大类: 1.基本数据类型: 1.String 字符串 表示一段文本,例如:人的姓名.地址等 2.Number 数值 3.Boolean 布尔 ...

  6. 详解js中的undefined、NaN、null

    js中三大特殊的值: undefined NaN null 1.undefined 变量声明了但为赋值 console.log(typeof undefined); //undefined conso ...

  7. 详解js中的闭包(closure)以及闭包的使用

    作用域链 我们知道在js中作用域分为全局作用域与局部作用域,作用域链的访问规则为从内到外,也就是说如果当前的作用域中没有该变量或者方法,则会在包含该作用域的外层作用域中,一层一层的向上找,直到wind ...

  8. 详解 JS 中 a.x = a = {} 到底发生了啥?(图文并茂,包你看懂)

    直奔主题,先贴上代码: let a = {n:1}a.x = a = {n:2}console.log(a.x) console.log(a.x) 输出什么呢? 作为一个初学者,我的第一反应还是挺懵的 ...

  9. php 数组 indexof,详解js中字符串和数组的indexof方法

    javascript:里判断字符串是否包涵某个子字符串时,我们经常会遇到indexOf这个方法.但是你可知道,indexOf不仅仅可以用在字符串里,还可以用在数组里. 首先我们来认识一下indexOf ...

最新文章

  1. scanf函数和printf函数
  2. 代码精进之路 码农到工匠pdf_VBA代码解决方案第065讲试看内容
  3. 计算机应用在开始栏显示乱码,大神解决win10系统应用程序和开始菜单出现乱码的详细方案...
  4. java 执行jar_windows下如何用java指令运行jar包?
  5. 像素包装:在内存中并不以紧密形式排列
  6. JavaScript笔记-表格中放按钮并点击调用
  7. UbuntuSkills
  8. Netmeeting使用方法
  9. windows10 8081端口被占用如何解决
  10. Fisher exact test费雪精确检验
  11. 工作一年心路历程及个人感悟
  12. 企业生产计划排产该如何制定
  13. java jwt登录_图解JWT如何用于单点登录
  14. 如何在 Android 上恢复删除屏幕截图/照片的四种方式
  15. python中多行注释可以嵌套单行注释吗_Python单行注释与多行注释
  16. 好消息,Vue3官方文档出中文版的啦!
  17. 计算机Excel怎么弄迷你图,excel怎么制作迷你图 excel迷你图的使用技巧
  18. 华为 AISC 研究型实习生招聘~北京 or 深圳
  19. APP架构构思基本思路初稿
  20. Bootstrap下拉菜单

热门文章

  1. Python3基础知识之运算符
  2. thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误
  3. batch_size 和 fetch_size作用
  4. Hibernate学习笔记--第一个Hibernate框架程序
  5. Android N Display Size
  6. Android编译系统中的Kconfig,Makefile,.config编译系统浅析
  7. php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
  8. 生态篇-HBase 生态介绍
  9. 我的2017年文章汇总——Java及中间件篇
  10. MapReduce01