javascript(一) 引用类型
以前进行java Web开发经常是在项目中遇到的javascript语法,然后自己上网找资料,发现很不成体系。于是就开始自己按照自己的学习进行总结。帮助自己系统的学习javascript,也和大家一起分享学习javascript的路线及知识。
本章内容来源于 Javascript高级程序设计(第三版),大家有时间可以自己找一下,自己学习。
言归正传,让我们来讨论一下javascript引用类型的第一个类型Object
- Object
Object是我们在编写javascript代码是经常用到的,function函数也算是O
bject.Object类型对于存储和传输数据是非常理想的。
创建Object实例有两种方法:
- 构造函数:
```
var person = new Object();
person.name = "lihua";
```
- 对象自变量:
```
var person = {
name : "lihua"
}
```
对象自变量方式是我们经常用的一种方法,在进行函数可选参数传递时自变量方式是一个很好的选择。
对于对象的属性访问有很多种,例如
person.name
//或者
person["name"]
采用[]方式可以用于属性名中间有空格等的属性,例如“first name”;正常情况下我们采用点表示法。
下面我们来总结一下第二个引用类型Array
- Array类型
Array应该是ECMAScript中使用第二多的类型了。Javascript中的Array不同于其他语言的Array类型,它的每一项可以保存任何类型的数据;而且大小可以调整即随着数据的添加自动增长以容纳新增数据。 创建Array的方式也有两种:
- 构造函数:
var colors = new Array(); //或 var colors = new Array(3); //或 var colors = new Array("greg"); //其中的new可以省略掉
- 数组自变量法:
var colors = ["red", "blue"]; //注意这里是中括号[],如果写成了{},看来你想要一个对象了 //有时有人会认为有些数据项我先不知道放什么,就多写一个,例如 var colors = ["red", ]; //IE会产生red和undefined两个元素的数组。其他浏览器会产生red一个元素的数组,不建议采用
2 基础方法
采用下表(基于0的数字索引)可以读取、修改、新增数组的值。var colors = ["red", "blue"]; colors[0] = "green"; alert(colors[1]); colors[2] = "black"; //获取长度 colors.length //利用length属性在Array末尾加入元素 colors[colors.lentgth] = "green"; //检测是不是数组 colors instanceof Array Array.isArray(colors); //Array的方法 colors.toString(); //green,blue,black,green colors.valueOf(); colors.toLocaleString(); //采用不同的分隔符获取数字项的字符串 jion colors.join("||"); //green||blue||black||green //不传参数,或传入undefined ,都将采用逗号分隔
3 栈方法
栈方法是数组的一个特别的行为,计算机专业毕业的学生应该都知道数据结构的栈,一种LIFO(后进先出)的数据结构,在栈的顶部(Array数组的末尾)进行插入和移除。提供的方法为push() 和 pop()方法。4 队列
有了支持栈方法的行为,怎么可能忘了队列数据结构呢;队列访问规则为FIFO(先进先出);在队末添加项 - push(),在队头移除项 - shift()。5 重排序方法
var nums = [1,2,3,4] //反转数据项的次序 nums.reverse(); //排序 sort nums.sort() //sort排序采用的是字符串 升序的方式排的,这会造成 15 < 5;所以sort可以接受一个自定义的函数当排序参数: nums.sort(function(v1, v2) { if (v1 < v2) { return -1; } else if (v1 > v2) { return 1; } else { return 0; } }) //这两种排序都会改变自身,也就是数组原来的排序会消失。
6 操作方法
//1 concat 连接两个数组 基于当前数组中的所有项创建一个新数组 空参数表示创建一个副本 var colors = colors.concat("yellow", ["black"]); //2 slice() 基于当前数组中的一或多个项创建一个新数组 slice((start[, end]]) 也可以传入负数表示从最后开始 var color2 = ["red", "green", "blue"]; var color2 = colors.slice(1,2); // green //3 splice() 向数组中部插入、删除、替换项;返回 //删除 splice((start, end]) var removed = colors.splice(0,1); // red colors : green, blue //插入 splice(start, 0, [items]) 返回删除的数组 var removed = colors.splice(1, 0, "yellow"); //[] colors: red, green, yellow, blue //替换 splice(start, deletenum, [items]) 返回删除的数组 var removed = colors.splice(1, 1, "black"); //["green"] colors: red, black, green,yellow, blue
7 位置方法
// indexOf(item, [start]) 返回查找项在数组中的位置 没有找到返回 -1 var numbers = [1, 2, 3, 4, 2]; numbers.indexOf(2); //1 numbers.indexOf(2, 3); //4 // lastIndexOf() 从数组的末尾开始向前查找
8 迭代方法
//1 every(function(item, index, array){}, this(该函数的作用域)); // 对数组中的每一项运行给定的函数, 每一项返回true,则返回true //2 filter(function(item, index, array){}, this); // 对数组中的每一项运行给定的函数,返回该函数会返回true组成的数组 //3 forEach(function(item, index, array){}, this); // 对数组中的每一项运行给定的函数, 没有返回值 //4 map(function(item, index, array){}, this); // 对数组中的每一项运行给定的函数, 返回每次函数调用的结果组成的数组 //5 some(function(item, index, array){}, this); // 对数组中的每一项运行给定的函数, 如果该函数对任一项返回true, 则返回true
9 归并方法
//1 reduce(function(prev, cur, index, array){}, baseValue) 迭代数组的所有项,从头到尾, 构建一个最终返回的值 //2 reduceRight() 迭代数组的所有项,从尾到头,参数域reduce()开始
Date 类型
Date类型是在早期Java中的java.util.Date类基础上构建。Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。
1 创建var now = new Date(); //新创建的对象自动获取当前日期和时间 var mydate = new Date(mills); //返回特定时间 Date.parse(date0); //返回相应日期的毫秒数 YYYY-MM-DDTHH:mm:ss.sssZ Date.UTC(years, months [, day ...] ); // 返回表示日期的毫秒数
2 方法
Date.toLocaleString(); // Thursday, February 01, 2007 12:00:00 AM Date.toString(); // Thu Feb 1 00:00:00 PST 2007 Date.valueOf(); //不返回字符串,而是返回日期的毫秒表示 toDateString(); // 以特定于实现的格式显示星期几、月、日和年 toTimeString(); // 以特定于实现的格式显示时、分、秒和时区 toLocaleDateString(); // 以特定于地区的格式显示星期几、月、日和年 toLocaleTimeString(); // 以特定于实现的格式显示时、分、秒 toUTCString(); // 以特定于实现的格式完整的 UTC 日期 set/getTime(); set/getFullYear(); set/getFullMonth(); set/getDay(); //还有些获取详细时间的方法
后面我们了解很重要的一个对象:RegExp(正则表达式)