先准备几个变量

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. Jack Straws(判断线段是否相交 + 并查集)

    /** http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1840    题意:    判断线段 ...

  2. 《A First Course in Probability》-chaper5-连续型随机变量-基本概念

    在利用基本的概率论模型解决实际问题的时候,我们很容易发现一些随机变量的连续分布的,例如火车进站的时间.台灯的寿命等一些和时间相关的随机变量,此时我们发现我们难以求出某个点的概率了,因为随机变量是连续的 ...

  3. selenium grid 搭建

    hub端 Step1: 下载 selenium-server-standalone-x.xx.x.jar我下载的是:selenium-server-standalone-2.44.0.jar下载地址: ...

  4. JS常用扩展

    // 清除两边的空格 String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ''); }; // 合并多 ...

  5. 学习restful 架构

    越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...

  6. readmine项目管理和缺陷跟踪工具

    官方网站:http://www.redmine.org/演示地址:http://demo.redmine.org/下载地址:http://www.redmine.org/projects/redmin ...

  7. HDU 1548 A strange lift 搜索

    A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  8. Java注解的简单了解

    部分信息来自<Thinking In Java> 注解也成为元数据.什么是元数据?就是“关于数据的数据” 注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便 ...

  9. 谈论C++当然结果

    C++编程课程的考试已经结束.这是第一次OJCBT.摸着石头过河,考试没有给学生理解的说法.现在尘埃落定.一些交代. 先说大的成就的治疗原则.事实上,有很多的纠结. 按理说,合格的太,无法挂.但实际情 ...

  10. VS项目属性配置实验过程

    (原创,转载注明出处:http://www.cnblogs.com/binxindoudou/p/4017975.html ) 一.实验背景 cocos2d-x已经发展的相对完善了,从项目的创建.编译 ...