JS引用类型介绍(一)
-
引用类型是js中非常重要的一种数据格式,js赋予了这种数据格式非常强大的属性以及方法,而且也给出了很大的扩展空间,这使得之后的框架可以在此基础上发展起来
Js中给出的引用类型分为7类,本片将介绍Object类型,Array类型,Date类型
Object类型
Object类型是使用最多的一个类型,是存储数据以及传输数据的理想选择
访问对象属性可以用点表示法,也可以使用方括号表示法//创建对象 let person = new Object(); //方式一 let person = { //方式二 name: "", age: 8 } //访问对象 alert(person.name); alert(person["name"]);
Array类型
创建数组的方式有很多
let colors = new Array(); let colors = new Array(20); let colors = new Array("bule"); let colors = Array(20); let colors = Array("bule"); let colors = ["blue","red","green"]; let colors = [];
可以通过数组的属性length来访问数组,添加数组元素
检测数组
检测对象是否属于数组
- instanceof()
- isArray()
if(value instanceof Array){ //ture or false //执行操作 } if(Array.isArray(value)){ //ture or false //执行操作 }
转换方法
把数组转换成为string等其他类型
- valueOf()
- toString()
- toLocaleString()
- join()
let colors = ["blue","red","green"]; alert(colors.join(",")); //blue,red,green alert(colors.join("||")); //blue||red||green
栈方法
数组可以使用下面方法实现栈(LIFO)的数据结构,对数组的末端进行操作
- push()
推入到数组的最后一项 - pop()
移除并取得数组最后一项
队列方法
数组可以使用下面方法实现队列(FIFO)的数据结构,对数组开头和结尾进行操作
- push()
- shift()
移除并取得数组第一项 - unshift()
推入到数组的第一项
重排序方法
对数组中的元素重新排序
- reverse()
反转数组的顺序 - sort()
按升序对数组进行排序,先对数组的每个元素调用toString()的方法
let values = [0,1,5,10,15]; values.sort(); alert(values); //0,1,10,15,5 比较字符 //要实现真正排序,需要写下面的函数 function conmpare(value1,value2){ if(value1 < value2){ return -1; } if(value1 > value2){ return 1; }else{ return 0; } } values.sort(compare); alert(values); //0,1,5,10,15 升序,若实现降序,将return -1改成return 1即可 //简单的排序函数 function compare(vaule1,value2){ return value2-value1; }
操作方法
- concat()
连接几个数组,返回一个数组 - slice()
基于当前数组创建一个新的数组,接受一个或者两个参数
let colors = ["blue","red","green","yellow","purple"]; let colors1 = colors.slice(1)); //red,green,yellow,purple let colors2 = colors.slice(1,4)); //red,green,yellow
- splice()
接受两个以上的参数,参数1-->起始位置,参数2-->删除几项,之后的参数表示需要插入的项,splice()方法可以实现对数组元素的删除,插入和替换
let colors = ["blue","red","green","yellow","purple"]; //删除 let delete = colors.splice(0,1); //colors = ["red","green","yellow","purple"] delete = ["blue"] //插入 let insert = colors.splice(1,0,"orange","black"); //colors = ["red","orange","black","green","yellow","purple"] insert = []空数组 //替换 let replace = colors.splice(1,1,"blue"); //colors = ["red","blue","black","green","yellow","purple"] replace = ["orange"]
位置方法
查找数组中某个元素位于数组中的位置(索引)
- indexOf()
- lastIndexOf()
迭代方法
迭代方法是对函数每一项进行操作,一共为数组定义了5个迭代方法
- every()
对数组每一项运行函数,如果每一项都返回ture,则返回ture - filter()
对数组每一项运行函数,该函数会返回ture的项组成的数组 - forEach()
对数组每一项运行函数,没有返回值 - map()
对数组每一项运行函数,返回每次函数调用的结果组成的数组 - some()
对数组每一项运行函数,如果该函数任意一项返回ture,该函数返回ture
let numbers = [1,2,3,4,5,4,3,2,1]; let everyResult = numbers.every(function(item,index,array){ return (item > 2); }) //everyResult = false let someResult = numbers.some(function(item,index,array){ return (item > 2); }) //someResult = ture let filterResult = numbers.filter(function(item,index,array){ return (item > 2); }) //filterResult = [3,4,5,4,3] let mapResult = numbers.map(function(item,index,array){ return (item * 2); }) //mapResult = [2,4,6,8,10,8,6,4,2] numbers.forEach(function(item,index,array){ //执行操作 }) //没有返回值
归并方法
可以理解为数组求和(求积)
reduce() reduceRight()两个方法都会遍历数组,一个从数组第一项开始遍历,一个从最后一项开始遍历
let values = [1,2,3,4,5]; let sum = values.reduce(function(prev,cur,index,array){ return prev + cur; })//sum = 15
第一次执行时,prev = 1,cur = 2
第二次执行是,prev为上一次返回的结果3(prev+cur),cur = 3Date类型
创建日期对象传入的时间格式必须是毫秒数,所以提供了转换格式的方法
- Date.parse()
- Date.UTC()
//把日期格式转换成为毫秒数 let someDate = new Date("May 25, 2019"); //获得当前时间 let nowDate1 = Date.now(); let nowDate2 = +new Date()
继承的方法
与其他引用类型一样,Date类型改写了valueOf(),toString(),toLocaleString()三个方法
valueOf()方法返回时间对应的毫秒数
toString()方法返回带时区信息的日期和时间
toLocaleString()方法返回的不带时区信息的日期和时间日期格式化方法
- toDateString()
- toTimeString()
- toLocalDateString()
- toLocalTimeString()
- toUTCString()
日期/时间组件方法
方法很多,不一一列举