如何判断js中的数据类型 js如何判断文件类型

如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较

如何判断js中的类型呢,先举几个例子:

var a = "iamstring.";

var b = 222;

var c= [1,2,3];

如何判断js中的数据类型 js如何判断文件类型

var d = new Date();

var e =function(){alert(111);};

var f =function(){this.name="22";};

最常见的判断方法:typeof

alert(typeof a) ------------> string

alert(typeof b) ------------> number

alert(typeof c) ------------> object

alert(typeof d) ------------> object

alert(typeof e) ------------> function

alert(typeof f) ------------> function

其中typeof返回的类型都是字符串形式,需注意,例如:

alert(typeof a == "string")-------------> true

alert(typeof a == String)---------------> false

另外typeof可以判断function的类型;在判断除Object类型的对象时比较方便。

判断已知对象类型的方法: instanceof

alert(c instanceof Array)---------------> true

alert(d instanceofDate)

alert(f instanceof Function)------------> true

alert(f instanceof function)------------> false

注意:instanceof后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

根据对象的constructor判断:constructor

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

通用但很繁琐的方法: prototype

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;

大小写不能写错,比较麻烦,但胜在通用。

通常情况下用typeof判断就可以了,遇到预知Object类型的情况可以选用instanceof或constructor方法,简单总结下,挖个坑,欢迎补充!

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/114261.html

更多阅读

如何恢复硬盘中的数据 如何恢复移动硬盘数据

如何恢复硬盘中的数据——简介电脑数据是以磁盘的形式存储的。对于大多数人来说,存储东西是相当方便的。但是很多人却不知道该如何快速的恢复已经删除的数据。下面咱们就说下如何利用工具来恢复数据。如何恢复硬盘中的数据——工具

怎样使用EXECL中的数据透视表入门篇 execl数据匹配

用EXECL中的数据透视表做统计非常方便,下面我用一个简单的例子给大家介绍下(本文使用的是MS OFFICE2007):假设我有个表格,要按月将不同列分别作统计步骤如下:点击“插入”-“数据透视表”点击图示中的按钮,选择数据透视表要统计

转 ISE中的data2mem用法 datainputstream用法

想必大家都遇到这么一种情况,只是想改变设计中的RAM或者ROM的数据,而却要对整个工程进行重新布局布线,这就要花费了大量的时间了。采用data2mem工具可以直接修改bitstream中blockram中的数据段。我们需要准备三个文件做为data2mem工具

如何保存网页中的文字 如何抓取图片中的文字

如何保存网页中的文字1、点击文件—另存为,保存类型选择文本文件*txt就好了。2、使用网页编辑软件:浏览器有默认的网页编辑软件(一般为frontpage或者word),只要在快捷工具栏中点击相应的按钮,或者依次选择“文件”→“使用MicrosoftFront

声明:《如何判断js中的数据类型 js如何判断文件类型》为网友三分热度分享!如侵犯到您的合法权益请联系我们删除