js如何判断数据类型
- 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
- 其中typeof返回的类型都是字符串形式,需注意,例如:
- console.log(typeof a == "string") -------------> true
- console.log(typeof a == String) ---------------> false
- 另外typeof 可以判断function的类型;在判断除Object类型的对象时比较方便。
- alert(c instanceof Array) ---------------> true
- alert(d instanceof Date)
- alert(f instanceof Function) ------------> true
- alert(f instanceof function) ------------> false
- 注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
- alert(c.constructor === Array) ----------> true
- alert(d.constructor === Date) -----------> true
- alert(e.constructor === Function) -------> true
- 注意: constructor 在类继承时会出错
- eg:
- function A(){};
- function B(){};
- A.prototype = new B(); //A继承自B
- var aObj = new A();
- alert(aobj.constructor === B) -----------> true;
- alert(aobj.constructor === A) -----------> false;
- 而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:
- alert(aobj instanceof B) ----------------> true;
- alert(aobj instanceof B) ----------------> true;
- 言归正传,解决construtor的问题通常是让对象的constructor手动指向自己:
- aobj.constructor = A; //将自己的类赋值给对象的constructor属性
- alert(aobj.constructor === A) -----------> true;
- alert(aobj.constructor === B) -----------> false; //基类不会报true了;
- alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
- alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
- alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
- alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
- alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
- alert(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;
- 大小写不能写错,比较麻烦,但胜在通用。
- 如果对象是undefined或null,则返回相应的“undefined”或“null”。
- jQuery.type( undefined ) === "undefined"
- jQuery.type() === "undefined"
- jQuery.type( window.notDefined ) === "undefined"
- jQuery.type( null ) === "null"
- 如果对象有一个内部的[[Class]]和一个浏览器的内置对象的 [[Class]] 相同,我们返回相应的 [[Class]] 名字。 (有关此技术的更多细节。 )
- jQuery.type( true ) === "boolean"
- jQuery.type( ) === "number"
- jQuery.type( "test" ) === "string"
- jQuery.type( function(){} ) === "function"
- jQuery.type( [] ) === "array"
- jQuery.type( new Date() ) === "date"
- jQuery.type( new Error() ) === "error" // as of jQuery 1.9
- jQuery.type( /test/ ) === "regexp"
其他一切都将返回它的类型“object”。
js如何判断数据类型的更多相关文章
- js中判断数据类型的四种方法总结
js中判断数据类型的四种方法 前言 在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢? 我们来一个个分析: 1.typeof typeof是一个 ...
- JS中判断数据类型的几种方法
1⃣️首先我们来了解一下js中的数据类型 1.基本数据类型:Undefined.Null.Boolean.Number.String(值类型) 2.复杂数据类型:Object(引用类型) (值类型和引 ...
- js中判断数据类型的4中方法
注意: js中数据类型有7种(number, boolean, string, null, undefined, object, Symbol(es6新增)) 原始数据类型: number, stri ...
- JS 中 判断数据类型 typeof详解
typeof 可用来获取检测变量的数据类型 语法 typeof operand typeof(operand) 参数 operand 一个表示对象或原始值的表达式,其类型将被返回. 描述 下表总结 ...
- JS 中判断数据类型是否为 null、undefined 或 NaN
判断 undefined var aaa = undefined; console.log(typeof(aaa) === "undefined"); // true 判断 nul ...
- js中判断数据类型
一般来说,可以使用typeof来判断数据类型,但是数组,对象和null的结果都是object,那么如何区分这三类呢?可以使用如下方法: var arr = []; var obj = {} var e ...
- js中判断数据类型的方法 typeof
<input type="text" onblur="demo(this)"/><br/> <input type="n ...
- js精确判断数据类型为何用Object.prototype.toString.call()而不是Object.prototype.toString()
有何区别,为何一定要通过call. 我们知道call是用来改变函数作用域的,Object.prototype.toString.call在这儿也是用来改变作用域的. Object.prototype. ...
- 如何判断js中的数据类型?
js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...
随机推荐
- (三)PHP网页架站
目前,Windows下已经有集成的PHP网页架站工具,例如:AppServ.WampServer.这些软件将Apache.PHP.MySQL.phpMyAdmin集成到一起,极大地方便了开发者架站.但 ...
- 服务器LIUNX之如何解决矿机问题
点进来的基本都是遇到liunx变矿机的小伙伴吧(cpu运载300%) 卡的连终端都很难打开 开下来之后提示 大意是, 到xxx网站给钱了事, 不过基本这个网站基本也上不去, 要么是暴力破解, 要么是通 ...
- [转]Tomcat优化之内存、并发、缓存
1.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. JAVA_OPTS ...
- TiDB, Distributed Database
https://www.zhihu.com/topic/20062171/top-answers
- 16_Queue_利用wait()和notify()编写一个阻塞队列
[线程间通信概念] 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体必用方式之一.当线程存在通信指挥,线程间的交互性会更强大,在提高CPU利用率的同 ...
- CAA介绍(转)
CAA是DS公司正对于其一系列产品,eg:CATIA,ENOVIA,DELIMA,etc,进行二次开发的一个环境.与VC结合的比较紧密.CAAV4是用于Unix/Linux的,到CAAV5才移植到Wi ...
- 【Leetcode】【Easy】Pascal's Triangle II
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- 319. Bulb Switcher (Math, Pattern)
There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every ...
- IOS MapKit框架的使用(专门用于地图显示)
● MapKit框架使用前提 ● 导入框架 ● 导入主头文件#import <MapKit/MapKit.h> ● MapKit框架使用须知 ● MapKit框架中所有数据类型的前 ...
- Codeforces Round #460 (Div. 2)
A. Supermarket We often go to supermarkets to buy some fruits or vegetables, and on the tag there pr ...