如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较<br><br>如何判断js中的类型呢,先举几个例子:<br><br>var a = "iamstring."<br><br>var b = 222<br><br>var c= [1,2,3]<br><br>var d = new Date()<br><br>var e =<br>function(){alert(111)}<br><br>var f =<br>function(){this.name="22"}<br><br>最常见的判断方法:typeof<br><br>alert(typeof a)<br> ------------>string<br><br>alert(typeof b)<br> ------------>number<br><br>alert(typeof c)<br> ------------>object<br><br>alert(typeof d)<br> ------------>object<br><br>alert(typeof e)<br> ------------>function<br><br>alert(typeof f)<br> ------------>function<br><br>其中typeof返回的类型都是字符串形式,需注意,例如:<br><br>alert(typeof a == "string")<br>------------->true<br><br>alert(typeof a == String)<br>--------------->false<br><br>另外typeof<br>可以判断function的类型;在判断除Object类型的对象时比较方便。<br><br>判断已知对象类型的方法: instanceof<br><br>alert(c instanceof Array)<br>--------------->true<br><br>alert(d instanceof<br>Date) <br><br>alert(f instanceof Function)<br>------------>true<br><br>alert(f instanceof function)<br>------------>false<br><br>注意:instanceof<br>后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。<br><br>根据对象的constructor判断:<br>constructor<br><br>alert(c.constructor ===<br>Array) ---------->true<br><br>alert(d.constructor === Date)<br>----------->true<br><br>alert(e.constructor ===<br>Function) ------->true<br><br>注意: constructor 在类继承时会出错<br><br>eg,<br><br>function A(){}<br><br>function B(){}<br><br>A.prototype = new B()//A继承自B<br><br>var aObj = new A()<br><br>alert(aobj.constructor === B) -----------><br>true<br><br>alert(aobj.constructor === A) -----------><br>false<br><br>而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:<br><br>alert(aobj instanceof B) ----------------><br>true<br><br>alert(aobj instanceof B) ----------------><br>true<br><br>言归正传,解决construtor的问题通常是让对象的constructor手动指向自己:<br><br>aobj.constructor = A<br>//将自己的类赋值给对象的constructor属性<br><br>alert(aobj.constructor === A) -----------><br>true<br><br>alert(aobj.constructor === B) -----------><br>false//基类不会报true了<br><br>通用但很繁琐的方法: prototype<br><br>alert(Object.prototype.toString.call(a) === ‘[object String]’)<br>------->true<br><br>alert(Object.prototype.toString.call(b) === ‘[object Number]’)<br>------->true<br><br>alert(Object.prototype.toString.call(c) === ‘[object Array]’)<br>------->true<br><br>alert(Object.prototype.toString.call(d) === ‘[object Date]’)<br>------->true<br><br>alert(Object.prototype.toString.call(e) === ‘[object Function]’)<br>------->true<br><br>alert(Object.prototype.toString.call(f) === ‘[object Function]’)<br>------->true<br><br>大小写不能写错,比较麻烦,但胜在通用。<br><br>通常情况下用typeof<br>判断就可以了,遇到预知Object类型的情况可以选用instanceof或constructor方法,简单总结下,挖个坑,欢迎补充!1.字符串创建方式
2.string以及任何的js数据都有两种身份:
1)表示自身数据类型
2)表示对象类型身份:对象类型身份给每种数据类型提供了很多的操作方法,便于对数据进行操作
总之就是js中一切皆是对象,可以对其进行相应的操作。
3.字符串对象属性lenght。
string.lenght
表示字符串包含字符的个数
4.String对象方法
2)、 chartCodeAt (获取字符串指定下标字符的UniCode编码)
3)、 indexOf (获取指定字符下标首次出现的位置)
字符串.indexOf('指定字符') 获取指定字符下标,没有则返回-1
字符串.indexOf('指定字符',指定下标) 从指定下标处开始获取指定字符下标,没有则返回-1
可以用来判断html的class属性中是否包含某些类名。
4)、 lastIndexOf用法与indexOf完全相同,只是lastIndexOf是从后往前查找
5)、字符串的比较:
字符串大小比较实际上是比较两个字符串的ASCII编码值。1-9ASCII编码值逐渐增大,a-z编码值逐渐增大。
比较方法:先比较两个字符串的首位,首位相同则比较下一位,以此类推。
6)、字符串的截取方法substring
字符串.substring(起点下标,终点下标),可以截取到起点截取不到终点。起点终点位置颠倒也可以
字符串.substring(起点下标);起点及后面都可以截取到
字符串.substring(负数),如果传入参数为负数,会直接将负数参数置为0
7)、字符串的截取方法Slice
字符串.slice(起点下标,终点下标),可以截取到起点截取不到终点。起点终点位置颠倒不可以
字符串.slice(起点下标),起点及后面都可以截取到
如果参数为负,会将参数与原字符串的lenght相加得到结果作为参数,加完后还为负数,则置为零。
8)、字符串大小写转换方法:toUpperCase()toLowerCase()
9)、字符串的切割方法:split
字符串.split('切割标识')
以切割标识进行切割,将字符串切割分开,放入数组钟,并将数组返回。
切割标识会被切掉,不会保留到数组中,如果不传切割标识则将整个字符串放入数组作为一个数组项。
例子:例如微信小程序扫码进入页面传的参数为233_affadsgafd,则通过split("_")截取,scene[0]的值为233,scene[1]的值为affadsgafd
10)、替换字符串方法:replace()
字符串.replace('要替换的字符部分','用来替换的字符部分')
11)、删除字符串两端空格方法:trim()
字符串.trim()
删除字符串两边空格,一般用在注册用户名或密码的时候,防止用户输入空格;
trim只删除字符串两端空格,不删除字符串中间的空格
字符串、数字、布尔值、undefined以及null都是原始类型(primitive)而非对象。而String,Number,Boolean,Object都是语言内置的对象(built-in object),可以通过各自的构造函数得到。
比如子啊JavaScript中,字符串是一个原始类型,他本身没有属性,当你对一个字符串属性运算得时候(如“somestring”.length),javascript引擎会将该字符串包装成一个对象,该对象是通过String构造函数得到的,也就是说“some string”.length实际上是(newString(“some string”)).length。
对象(object)是JavaScript的核心概念,也是最重要的数据类型。
所谓对象,带有属性和方法的数据类型,一般由若干个“键值对”(key-value)构成。如:var obj = content:"Hello xuzhiwen!"大括号定义了一个对象,他被赋值给变量obj,内部包含一对键值对(属性),content是“键名”(属性名),字符串“Hello”是“键值”(属性值)。键名与键值之间用冒号分割。如果有多个键值对,每个键值对之间用都好分隔。