先准备几个变量

var a = "abcde.";

var b = 222;

var c= [1,2,3]; // 或者 new Array()

var d = new Date();

var e = function(){alert(111);};

var f = function(){this.name="rrrr";};

var g ={ 'name':'rrrr'}

1. 通用型 Object.prototype.toString.call(obj)  , 注意大小写

console.log(Object.prototype.toString.call(a) === ‘[object  String]’) //true;

console.log(Object.prototype.toString.call(b) === ‘[object  Number]’) //true;

console.log(Object.prototype.toString.call(c) === ‘[object  Array]’) //true;

console.log(Object.prototype.toString.call(d) === ‘[object  Date]’) //true;

console.log(Object.prototype.toString.call(e) === ‘[object  Function]’) //true;

console.log(Object.prototype.toString.call(f) === ‘[object   Function]’) //true;

console.log(Object.prototype.toString.call(g) === ‘[object  Object]’) //true;

2.typeof 方式 ,返回都是小写形式的数据类型名称字符串

console.log(typeof a)   //string

console.log(typeof b)   //number

console.log(typeof c)   //object

console.log(typeof d)   //object

console.log(typeof e)   //function

console.log(typeof f)   //function

console.log(typeof g)   //object

判断:alert(typeof a == "string")    ////true

3. instanceof , 判断已知对象类型,标准的js数据类型名称,注意大小写

console.log( a instanceof  String)     //true

console.log( d instanceof  Date)  // true

console.log( c instanceof  Array)  // true

console.log( g instanceof  Object)  //true

4. obj.constructor 对象的属性判断  用 === 符号,(与内置数据类型比较时为标准的js数据类型名称,注意大小写。也可与自定义数据类型比较,但是在继承时会有些问题)

function A(){};
    function B(){};
    A.prototype = new B(); //A继承自B

var obj0 = new A();
    console.log(obj0.constructor === A);   // false
    console.log(obj0.constructor === B);   // true

//这里用instanceof 则会都给出 true值

console.log(obj0 instanceof A)  //true;

console.log(obj0 instanceof B)  //true;

//解决construtor的问题通常是让对象的constructor手动指向自己:

obj0.constructor = A; //将自己的类赋值给对象的constructor属性

console.log(obj0.constructor === A) //true;

console.log(obj0.constructor === B) //false; //基类不会报true了;

JavaScript 类型判断的那些事的更多相关文章

  1. JavaScript 类型判断 —— typeof 以及 instanceof 中的陷阱

    JavaScript中基本类型包含Undefined.Null.Boolean.Number.String以及Object引用类型.基本类型可以通过typeof来进行检测,对象类型可以通过instan ...

  2. JavaScript类型判断详解(Object.prototype.toString.call()方法进行数据类型的可靠判断)

    前言 在编写一些类库中,我们经常需要判断一些未知的用户的输入和配置,故而需要进行一系列的类型判断.故而总结下JS是如何进行类型判断的 typeof typeof操作符返回一个字符串,表示未经计算的操作 ...

  3. JavaScript类型判断instanceof与typeof对比

    经常有人会在JavaScript里写如下的方法: function checkType() { var s1 = 123; var s2 = "OK"; if (s1 instan ...

  4. JavaScript类型判断

    几种方法:typeof,instanceof,Object.prototype.toString,constructor,duck type ES6引入了一种新的原始数据类型Symbol,表示独一无二 ...

  5. javaScript 类型判断

    直接上例子: 1 判断是否为数组类型 2 判断是否为字符串类型 3 判断是否为数值类型 4 判断是否为日期类型 5 判断是否为函数 6 判断是否为对象 1 判断是否为数组类型 linenum < ...

  6. javascript类型判断方法

    判断javascript中的类型,共有四种常用的方法 var a=6; var b="str"; var c=true; var arr=[]; typeof 用于基本类型的判断 ...

  7. javascript类型判断最佳实践

    javascript有8种数据类型 值类型 Number Null Undefined String Symbol Boolean BigInt 引用类型 Object Array Function ...

  8. Javascript类型检测

    原地址 http://www.cnblogs.com/fool/archive/2010/10/07/javascrpt.html 开门见山,我们先来看一下代码: var is = function ...

  9. JavaScript数据类型判断的四种方法

    码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14416375.html 本文分享了JavaScript类型判断的四种方法:typeo ...

随机推荐

  1. NOI题库1814 恼人的青蛙

    1814:恼人的青蛙 总时间限制: 2000ms 单个测试点时间限制: 500ms 内存限制: 65536kB 描述 在韩国,有一种小的青蛙.每到晚上,这种青蛙会跳越稻田,从而踩踏稻子.农民在早上看到 ...

  2. max Sum(简单动态规划)

    http://acm.hdu.edu.cn/showproblem.php?pid=1003 / 给组测试数据 1 7 2 3 -4 -5 6 7 8 一个关键问题 : 什么时候将开始位置重新赋值 即 ...

  3. N - Is It A Tree?(判断环)

    题意,就是判断这点点是不是组成的一颗树,也就是判断是否有环,就是没看出来如果是森林怎么办,试一试吧,最可恶的还没有说有多少节点.....就是个坑 /////////////////////////// ...

  4. web.xml基本配置描述

    先加载一段写好的web.xml: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2. ...

  5. ./filezilla: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

    opensuse系统 在filezilla官网下载压缩文件解压运行后报 ./filezilla: error while loading shared libraries: libpng12.so.0 ...

  6. Servlet跳转

    方便自己查询,嫌低级的勿喷.... 在Servlet中跳转有两种: 1.客户端跳转 在Servlet中要进行客户端跳转(地址栏的地址信息将发生改变),直接使用HttpServletResponse接口 ...

  7. 缓存的概念(反向代理、CDN)

    缓存在我们的日常开发中随处可见,理解缓存的概念,本质就是就近处理,比如很多热点数据,访问量很多,我们需要使用,就可以把它 缓存起来,然后下次访问就不用再去数据库的去查询了,而是直接使用缓存,现在说说大 ...

  8. JS 操作 HTML 自定义属性

    <input type="text" id="txtBox" displayName="123456" /> 获取自定义属性值: ...

  9. Scriptcase演示程序

    为了方便大家对Scriptcase有一个非常直观的印象,现在将Scriptcase的示例程序进行了适当汉化,并且放在互联网上,您可以直接点击这个地址访问. 需要说明的是,示例程序中提供的范例,基本上都 ...

  10. [Falcor] Indroduce to Model

    How to work with JSON data indirectly through a Falcor Model. The Falcor Model allows you to work wi ...