本章内容来源于 Javascript高级程序设计(第三版),大家有时间可以自己找一下,自己学习。
言归正传,让我们来讨论一下javascript引用类型的第一个类型Object
创建Object实例有两种方法:
- 构造函数: ``` var person = new Object(); person.name = "lihua"; ``` - 对象自变量: ``` var person = { name : "lihua" } ```对象自变量方式是我们经常用的一种方法,在进行函数可选参数传递时自变量方式是一个很好的选择。 对于对象的属性访问有很多种,例如
person.name //或者 person["name"]采用[]方式可以用于属性名中间有空格等的属性,例如“first name”;正常情况下我们采用点表示法。 下面我们来总结一下第二个引用类型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, blue7 位置方法
// 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, 则返回true9 归并方法
//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(正则表达式)
