js是一门弱类型的语言,但是在使用过程中,经常要用到,对象,字符串,数组等数据类型。这里我们不讲数字类型了,现在前后端分离的天下,后端取的数据五花八门,有时候因为数据类型的问题,莫名的BUG,我们常用的,对象字符串相互转换,数组对象相互转换等,往往焦头烂额,这里我们不得不介绍一下TypeScript了,它是js的一个超集,微软主导的一个项目,主要是类型批注和编译时类型检查,这大大降低了因为数据类型而产生的问题,感兴趣可以去看一下官方文档,你的代码可能要多写很多行不过。
我们先说说js中的字符串,字符串主要是用于存储和操作文本。我们可以这样定义一个字符串
var carname = String()var carname = "porsche" //也可以直接设置内容
字符串有固定的属性和方法。我们简单讲一下,
例如carname.length这样是获取字符串的长度,另外还有constructor,prototype等。
字符串的方法,常见的有indexOf,charAt,match,replace()等等,就不详细介绍了。
什么是对象,下边我们用汽车来做举例。
在真实生活中,汽车是一个对象。
汽车有诸如车重和颜色等属性,也有诸如启动和停止的方法:
var car = new Object()
这样就创建了一个汽车对象了.
我们给汽车定义属性,例如
var car.name = porschevar car.model = 911
我们也可以为汽车定义方法,例如
var car.start()var car.stop()
什么是数组,跟字符串,对象有什么区别,数组跟字符串不同的地方在于,可以存放一个以上的值,相当于升级版的字符串,又不同于字符串,我们还是用汽车举例,当我们三种品牌的车可以用变量来表示,当我们有300种的时候,就很麻烦了,这时候就需要用到数组,来快速存储和遍历数据,在有一点数组也是对象的一种,我们用typeof测试,返回的数据类型都是object
console.log(typeof this.person)
数组使用数字来访问其“元素”。在本例中,person[0] 返回 Bill:
var person = ["Bill", "Gates", 62];
对象使用名称来访问其“成员”。在本例中,person.firstName 返回 Bill:
var person = {firstName:"Bill", lastName:"Doe", age:46};
为了解决这个问题,ECMAScript 5 定义了新方法 Array.isArray(),我们通过返回的是true还是false就可以正确判断是否为数组了。数组算是对象的儿子辈,而跟字符串是亲戚关系。
总结一下,家族关系 数组是特殊类型的对象,而数组中可以保存对象,函数,字符串,数字等。
对象和数组中包含着字符串和数字。他们之间也可以相互转换
字符串和对象可以相互转换,JSON.stringify() JSON.parse()
数组想要转换成对象,往往需要使用.map等遍历一下。
将对象转为数组,我们往往采用for循环结合arr.push的方式来使用。