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 ...
随机推荐
- 解密HOMS
一个可以做证券账户多账户和子账户管理软件.早年是提供给基金或者机构使用的,毕竟传统印象中,也只有他们有多个账户需要汇集.单一账户需要拆分. 本来作为专业的工具,在小范围内传播,和大众也没多大关系,行业 ...
- ios解析XML和json数据
解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数 ...
- evernote出现“Sync failed due to unexpected problem at server side”的问题
继上次的"Invalid username and/or password"问题之后,evernote又出现了“Sync failed due to unexpected prob ...
- HDU - 4815 Little Tiger vs. Deep Monkey (长春赛区C题)
题意:有A,B两个人.n道题目.每题有相应的分数.B答对题目的概率是0.5.求A不输给B的概率不小于P要拿的最低分数 思路:DP,dp[i][j]来表示B答了前i题后分数为j的概率,,然后通过B的概率 ...
- CSS之后代选择器与多类选择器
<新人报到,欢迎拍砖#- -> 一.后代选择器 说起CSS的后代选择器.它属于派生选择器中的一种,两者附属关系如下: -->派生选择器 ----CSS 后代选择器 ----CSS 子 ...
- 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序(Oledb)
解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序1.确保安装了Microsoft.ACE.OLEDB.12.0驱动 http://downl ...
- (转)PHP函数spl_autoload_register()用法和__autoload()介绍
转--http://www.jb51.net/article/29624.htm 又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解决 ...
- Directory类
string[] pathes = Directory.GetDirectories(@"G:\ReawFiles");//获得所有的文件夹 string[] pathes = D ...
- Android 的 Relative Layout 常量
android:layout_above 将该控件的底部置于给定ID的控件之上 --Rule that aligns a child's bottom edge ...
- 【转】 iOS如何实现表格的折叠效果?
原文 : http://blog.csdn.net/youcanping2008/article/details/9202167 一.实现原理:就是在点击表格组头视图的时候,如果该表格视图的组展开了 ...