先准备几个变量

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. [Locked] Closest Binary Search Tree Value & Closest Binary Search Tree Value II

    Closest Binary Search Tree Value  Given a non-empty binary search tree and a target value, find the ...

  2. Postman interceptor

    安装 下载地址: Postman Interceptor Chrome插件下载 1. 下载的是一个crx文件. 2. 在谷歌中打开: chrome://extensions/ 3. 拖动cfx文件到 ...

  3. Python算法之---冒泡,选择,插入排序算法

    ''' Created on 2013-8-23    @author: codegeek '''    def bubble_sort(seq):     for i in range(len(se ...

  4. raw_input() 与 input()的区别

    raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.下面举两个例子,来说明两者 raw_input和input两个均是 pyth ...

  5. Xcode7连接网络设置

    XCode7连接互联网的时候需要再info.plist设置(之前版本都不需要)连接网络NSAppTransportSecurity  字典NSAllowsArbitraryLoads    布尔  Y ...

  6. Windows7下32位IE异常不能打开解决方法

    今天更新了Update及安装了一些软件,重启电脑后发现32位IE不能正常打开,而64位IE正常. 错误信息如下: 问题签名:  问题事件名称: BEX  应用程序名: iexplore.exe  应用 ...

  7. 论C++与三国

    Scott Meyers曾说过,C++语言是一个语言联邦.C++包含面向过程,面向对象,泛型编程编程思想.现在C++11有加了一堆新特性,语言联邦更为庞大. 程序员们.常常挑起语言之争,甚至连大师级人 ...

  8. Linux cpuinfo 详解

     在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢? 经过查看,我的开发机器是1个物理C ...

  9. [转] 消息系统该Push/Pull模式分析

    信息推拉技术简介 “智能信息推拉(IIPP)技术”是在网上信息获取技术中加入了智能成份,从而有助于用户在海量信息中高效.及时地获取最新信息,提高了信 息系统主动信息服务的能力.如果引入基于IIPP的主 ...

  10. [转] Linux文件系统之hard link&symbol link

    这个图很清楚的表示出硬链接和软链接的方式. 1.硬链接: 基本定义:硬链接是有着相同inode号的仅文件名不同的文件(该文件名包含路径信息). 理解:如图,hard link和原始file通过同一个i ...