JavaScript 类型判断的那些事
先准备几个变量
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继承自Bvar 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 类型判断的那些事的更多相关文章
- JavaScript 类型判断 —— typeof 以及 instanceof 中的陷阱
JavaScript中基本类型包含Undefined.Null.Boolean.Number.String以及Object引用类型.基本类型可以通过typeof来进行检测,对象类型可以通过instan ...
- JavaScript类型判断详解(Object.prototype.toString.call()方法进行数据类型的可靠判断)
前言 在编写一些类库中,我们经常需要判断一些未知的用户的输入和配置,故而需要进行一系列的类型判断.故而总结下JS是如何进行类型判断的 typeof typeof操作符返回一个字符串,表示未经计算的操作 ...
- JavaScript类型判断instanceof与typeof对比
经常有人会在JavaScript里写如下的方法: function checkType() { var s1 = 123; var s2 = "OK"; if (s1 instan ...
- JavaScript类型判断
几种方法:typeof,instanceof,Object.prototype.toString,constructor,duck type ES6引入了一种新的原始数据类型Symbol,表示独一无二 ...
- javaScript 类型判断
直接上例子: 1 判断是否为数组类型 2 判断是否为字符串类型 3 判断是否为数值类型 4 判断是否为日期类型 5 判断是否为函数 6 判断是否为对象 1 判断是否为数组类型 linenum < ...
- javascript类型判断方法
判断javascript中的类型,共有四种常用的方法 var a=6; var b="str"; var c=true; var arr=[]; typeof 用于基本类型的判断 ...
- javascript类型判断最佳实践
javascript有8种数据类型 值类型 Number Null Undefined String Symbol Boolean BigInt 引用类型 Object Array Function ...
- Javascript类型检测
原地址 http://www.cnblogs.com/fool/archive/2010/10/07/javascrpt.html 开门见山,我们先来看一下代码: var is = function ...
- JavaScript数据类型判断的四种方法
码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14416375.html 本文分享了JavaScript类型判断的四种方法:typeo ...
随机推荐
- bzoj3223 Tyvj 1729 文艺平衡树(Splay Tree+区间翻转)
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2202 Solved: 1226[Submit][Sta ...
- trigger 触发器
--trigger --在SC表上建了一个触发器,查看inserted和deleted表中内容. create trigger tri_1 on sc for insert,update,delete ...
- Cookie介绍及JavaScript操作Cookie方法详解
本文主要为大家简单介绍了以下Cookie的用途.运行机制,以及JavaScript操作Cookie的各种方法,总结的比较全面,希望能给大家带来帮助. 什么是 Cookie “cookie 是存储于访问 ...
- How many ways?? - hdu2157(矩阵快速幂-模板)
分析:求Map^k,刚开始没有用快速幂,TLE了 代码如下: =================================================================== ...
- 从一个简单的Java单例示例谈谈并发 JMM JUC
原文: http://www.open-open.com/lib/view/open1462871898428.html 一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这 ...
- HDU4530:小Q系列故事——大笨钟
Problem Description 饱尝情感苦恼的小Q本打算隐居一段时间,但仅仅在3月25号一天没有出现,就有很多朋友想念他,所以,他今天决定再出来一次,正式和大家做个告别. 小Q近来睡眠情况很差 ...
- Linux服务器监控系统 ServMon V1.1---张宴
http://zyan.cc/post/291/ http://blog.zyan.cc/post/276/ http://zyan.cc/post/354/
- 从零开始写一个Tomcat(叁)--请求解析
挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLCla ...
- 解决XCode 4.x SVN无法连接的问题
XCode升级到4.X版本后,确实好用了不少.但普通都存在SVN无法连接的问题.XCode4.x Source Control功能迁移到了File - Source Control目录下,也出现了一些 ...
- [转] STL源码学习----lower_bound和upper_bound算法
http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html PS: lower_bound of value 就是最后一个 < ...