先准备几个变量

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了;

转载于:https://www.cnblogs.com/alan_peng/p/5887716.html

JavaScript 类型判断的那些事相关推荐

  1. 手把手带你写一个JavaScript类型判断小工具

    业务写了很多,依然不是前端大神,我相信这是很多'入坑'前端开发同学的迷茫之处,个人觉得前端职业发展是有路径可寻的,前期写业务是一个积累过程,后期提炼总结,比如编程思想,父子类的原型继承,还是对象之间的 ...

  2. JavaScript 类型判断 判断Null和Undefined

    js类型判断 判断Null和Undefined javaScript中判断数据类型的方法主要有三种: ​ **typeof:**原理是通过根据变量的机器码来判断 ​ instanceof:根据 构造函 ...

  3. JavaScript类型判断

    JS(ES6)中的基本数据类型:1.数值型(Number):包括整数.浮点数.2.布尔型(Boolean).3.字符串型(String).4.数组(Array).5.空值(Null) .6.未定义(U ...

  4. 原生JavaScript类型判断

    第1问:js中的数据类型有哪些? 1.1 原始数据类型:共有7种 Boolean Number String undefined null Bigint Symbol 1.2 引用数据类型:1种 Ob ...

  5. 详解JavaScript变量类型判断及domReady原理 写得很好

    原文:详解JavaScript变量类型判断及domReady原理 我们知道,在开发JavaScript时候,经常要判断JavaScript变量类型,此 JavaScript教程 详细介绍JS变量的判断 ...

  6. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断...

    C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25. ...

  7. JavaScript 学习笔记— —类型判断

    //1 判断是否为数组类型var a=[0];console.log(isArray(a));function isArray(obj){return (typeof obj=='object') & ...

  8. javascript如何判断变量的数据类型

    typeof 用法示例 var arr = []; typeof arr; //'object' typeof(arr); //'object' typeof实际上是一个一元运算符,因此可以用上述代码 ...

  9. 看jquery3.3.1学js类型判断的技巧

    需要预习:call , typeof, js数据类型 1. isFunction中typeof的不靠谱 源码: var isFunction = functionisFunction( obj ) { ...

最新文章

  1. 关于Python 3.9,那些你不知道的事
  2. python小游戏代码大全-python小游戏实现代码
  3. Hyperledger Fabric 超级账本的硬伤
  4. javascript Array方法总结
  5. python 用户认证_Python使用LDAP做用户认证的方法
  6. 推荐Datawhale整理的秋招求职攻略
  7. python将字典写入json文件中
  8. UVA 11090 Going in Cycle!! 二分答案 + bellman-ford
  9. php 向py发起请求,Python向PHP发起GET与POST请求
  10. STM32 避障小车 —— HC-SR04
  11. python除法运算定律有哪些_小学数学最重要的7个运算定律,都在这里了
  12. chromecast 协议_如何设置新的Chromecast
  13. Linux中的基础I/O
  14. 关于SQL Server中left join on and 用法的介绍
  15. php 文本域,关于使用文本域(TextArea)的一个问题
  16. 1367:查找二叉树
  17. 腾讯云CDB/CynosDB技术揭秘
  18. 2021-2027全球与中国户外建筑用大理石市场现状及未来发展趋势
  19. 立体栅格地图_网格Mesh-3D立体图形-教程-地图 JS API | 高德地图API
  20. 外媒评出全球32家AI独角兽公司:中国占10家

热门文章

  1. 内存条引发的各类故障解析
  2. 开源组件 Ehcache中被曝严重漏洞,影响多款Jira产品
  3. Java 多线程学习笔记
  4. 云安全之虚拟机安全监控
  5. NLPIR语义智能平台支持大数据个性化学习
  6. iOS tableview嵌套collectionview
  7. fiddler 抓取 安卓模拟器 https包
  8. linux的增删改查、压缩与解压缩
  9. oralce 创建用户和权限
  10. 阿里“双十一”决胜物流战 智能、开放才能走的更远