一, Object 类型
1. 创建方法:
(1)使用 new 操作符
- var person = new Object();//()可以省略
- person.name = 'Nicholas';
- person.age = 29;
(2)对象字面量
- var person = {
- name: 'Nicholas',
- age: = 29
- }
2. 访问对象属性
(1)点表示法: person.name
(2)方括号表示法: person['name']
优点:
a. 可以通过变量来访问属性
b. 属性名中包含导致语法错误的字符, 包含关键字或保留字时, 可用方括号访问, 如
person['first name'] = 'Nicholas'
二, Array 类型
1. 创建方法
(1)使用 Array 构造函数:
- var color = new Array();// 可省略 new 操作符
- // 可传入数组长度
- var color = new Array(3);// 创建了一个长度是 3 的数组
- // 可传入数组元素
- var color = new Array('red','blue','green');// 创建了一个包含三个字符串的数组
(2)数组字面量法
var color = ['red','blue','green'];
2. length 属性
数组的 length 属性不是只读的, 可以通过修改 length 属性来向数组中添加元素和删除元素
- var color = ['red','blue','green'];
- colors.length = 2;// 删除了数组末尾的元素
- colors[length] = 'pink' ;// 向数组末尾添加了元素
colors.length = 5 ; 向数组末尾添加了两项, 值为 undefined
3. 检测数组
- typeof arr //object
- colors instanceof Array //true
- Array.isArray(colors) //true
4. 转换方法
Array 重写了 toLocalString(),toString(),valueOf()方法
(1) toString(): 返回以数组中每项的字符串形式拼接的以逗号分隔的字符串
(2) valueOf(): 返回的还是数组本身
(3) toLocalString(): 每一项调用 toLocalString(), 返回以逗号分隔的字符串
(4) join('指定分隔符')方法: 返回以指定分隔符拼接的字符串
注: 以上方法在遇到数组的项是 null,undefined 时, 以空字符串表示
5. 数组元素操作方法
会修改原数组的方法:
(1) push(): 接受任意项的参数, 把他们逐个添加到数组末尾, 并返回修改后数组的长度
(2) pop(): 从数组末尾移除最后一项, 数组长度减 1, 返回移除的项
(3) unshift(): 接受任意参数, 向数组开头添加元素, 并返回修改后数组的长度
(4) shift(): 移除数组的第一项, 数组长度减 1, 返回移除的项
(5) reverse(): 翻转数组, 返回翻转后的数组
(6) sort(): 默认情况, 该方法会调用每项的 toString()方法, 然后比较字符串, 升序排列数组项. 该方法可以接受比较函数做参数排序.
- var arr = [0,11,2,33,24,5];
- arr.sort();//[0, 11, 2, 24, 33, 5]
- // 接受比较函数
- // 如果第一个参数应该位于第二个之前则返回一个负数; 如果两个参数相等则返回 0; 如果第一个参数应该位于第二个参数之后则返回一个正数
- function compare(val1,val2){
- if (val1 <val2) {
- return -1;
- }else if (val1 == val2) {
- return -1;
- } else if (val1> val2) {
- return 1;
- }
- }
- arr.sort(compare);//[0, 2, 5, 11, 24, 33]
(7) splice(): 可以删除, 插入, 替换数组
- //splice()方法接受的参数表示:
- //a. 只传一个参数: 这个参数默认为开始位置, 则会从开始位置删除数据到数组末尾, 返回被删除的元素组成的数组
- var arr=[1,2,3,4,5];
- arr.splice(4);// 返回[5],arr 为[1, 2, 3, 4]
- //b. 传两个参数: 第一个参数表示删除数据的开始位置, 第二个参数表示要删除数组项的个数, 若第二为 0 表示从开始位置删除到数组末尾, 返回被删除的元素组成的数组
- var arr=[1,2,3,4,5];
- arr.splice(2,2);// 返回 [3, 4],arr 为[1, 2, 5]
- //c. 传入三个参数: 第一个参数表示删除数据的开始位置, 第二个参数表示要删除数组项的个数, 第三个参数表示要插入到开始位置那里的元素项, 第三个参数可以不止一个, 可以为一个数组. 返回被删除的元素组成的数组
- var arr=[1,2,3,4,5];
- arr.splice(2,2,30,40);// 返回 [3, 4],arr 为[1, 2, 30,40, 5]
- arr.splice(2,2,[30,40]);// 返回 [3, 4],arr 为[1, 2, [30,40], 5]
不会修改原数组的方法
(1) concat(): 先创建数组的副本, 接受任意参数, 将接受的参数添加到副本末尾, 返回新构建的数组(接受的参数如果是数组, 则是将数组的每一项添加到副本的末尾)
(2) slice(sindex,eindex): 接受一到两个参数, 表示起始位置和结束位置. 返回从起始位置到结束位置前一个的数组项组成的数组.
- //a. 没有结束位置, 则是从开始位置截取到数组末尾
- //b. 若参数是负数, 则用用数组长度加上改参数来确定位置
- //c. 若起始位置小于结束位置, 则返回空数组
6. 位置方法
- (1) indexOf():
- (2) lastIndexOf():
a. 这两个方法都接受两个参数: 要查找的项和开始查找的起点位置索引(可选).
b. indexOf()方法从数组的开头开始向后查找, lastIndexOf()则从数组末尾开始向前查找
c. 两个方法都返回要查找的项在数组中的位置索引, 没有找到则返回 - 1.
d. 两个方法查找的时候使用全等 (===) 去比对查找
7. 迭代方法
ECMAScript5 为数组定义了五个迭代方法: every(),filter(),forEach(),map(),some().
a. 每个方法都接受两个参数: 要再每一项上运行的函数和运行该函数的作用域对象(可选)-- 影响 this 的值.
b. 传入的方法函数接受三个参数: 数组项的值, 该项的位置索引, 数组对象本身.
c. 根据使用的方法不同, 传入的函数返回值也不同.
(1)every(): 对数组中的每一项运行给定函数, 如果该函数对每一项都返回 true, 则返回 true
(2)some(): 对数组中的每一项运行给定函数, 如果该函数对任意一项返回 true, 则返回 true
(3)filter(): 对数组中的每一项运行给定函数, 返回该函数会返回 true 的项组成的数组
(4)map(): 对数组中的每一项运行给定函数, 返回每次函数调用的结果组成的数组
(5)forEach(): 对数组中的每一项运行给定函数, 这个方法没有返回值
- var nums = [1,2,3,4,5];
- var everyResult =nums.every(function(item,index,arr){
- return (item> 2) ;
- });
- everyResult;//false
- var someResult =nums.some(function(item,index,arr){
- return (item> 2) ;
- });
- someResult;//true
- var filterResult =nums.filter(function(item,index,arr){
- return (item> 2) ;
- });
- filterResult;//[3,4,5]
- var mapResult =nums.map(function(item,index,arr){
- return (item * 2) ;
- });
- mapResult;// [2, 4, 6, 8, 10]
8. 缩小方法
- (1)reduce()
- (2)reduceRight()
a. 这两个方法都会迭代数组的所有项, 然后构建一个最终的返回值
b. reduce()方法从数组开头逐个遍历到最后, reduceRight()方法则从数组末尾向前遍历到数组第一项
c. 两个方法都接受两个参数: 要再每一项上运行的函数和 (可选) 作为缩小基础的初始值
d. 运行的函数接受 4 个参数: 前一个值, 当前值, 当前项的索引, 数组对象
e. 运行的函数返回的任何值都会作为第一个参数自动传给下一项
f. 第一次迭代发生在数组的第二项上, 第一个参数是数组的第一项, 第二个参数是数组的第二项
g. 若有作为缩小基础的值, 第一次迭代时, 第一个参数是作为缩小基础的值, 第二个参数是数组的第一项
- //reduce()执行数组求和
- var nums = [1,2,3,4,5];
- var sum = nums.reduce(function(prev,cur,index,arr){
- return prev + cur
- });
- sum;//15
三, Date 类型
1. 创建一个日期对象
var date = new Date();
a. 不传参数: date 为当前的日期时间
b. 传参: date 为指定日期时间的对象, 参数可为表示特定时间的毫秒数, 或日期字符串
2. Date 方法
(1)Date.parse(): 接受一个表示日期的字符串参数, 返回相应的毫秒数. 若字符串参数不能表示日期, 则返回 NaN
注: 日期字符串格式因地区而异
(2)Date.UTC(): 返回表示日期的的毫秒数, 参数分别是: 年份, 基于 0 的月份, 月中的哪一天, 小时, 分钟, 秒, 毫秒. 年和月是必须的, 其他参数忽略则默认为 0.
(3)Date.now(): 返回调用该方法时的日期和时间的毫秒数
3. 继承的方法
Date 类型重写了 toLocaleString():,toString(),valueOf()方法
(1)toLocaleString(): 按照浏览器设置的地区, 返回相应的日期时间
(2)toString(): 返回带有时区信息的日期时间
(3)valueOf(): 返回日期的毫秒数, 所以可以直接使用日期对象比较日期
4. 日期格式化方法
var date = new Date();
(1)toDateString(): 显示星期, 月, 日, 年 //"Fri Apr 20 2018"
(2)toTimeString(): 显示时, 分, 秒, 时区 //"11:21:57 GMT+0800 (中国标准时间)"
(3)toLocaleDateString(): 显示特定地区的年, 月, 日 //"2018/4/20"
(4)toLocaleTimeString(): 显示特定格式时, 分, 秒 //"上午 11:21:57"
(5)toUTCString(): 显示特定格式的完整 UTC 日期 //"Fri, 20 Apr 2018 03:21:57 GMT"
5. 日期 / 时间组件方法
(1)getTime()/setTime(毫秒数): 获取日期毫秒数 / 以毫秒数设置时间
(2)getFullYear()/setFullYear(年): 获取 / 设置年份
(3)getMonth()/setMonth(月): 获取 / 设置月份(0 表示一月, 11 表示 12 月; 设置月份值必须大于 0, 超过 11 则增加年份)
(4)getDate()/setDate(日): 获取 / 设置月中的天数
(5)getDay(): 获取日期中是星期几(0 表示星期天, 6 表示星期六)
(6)getHours()/setHours(时): 获取 / 设置日期中的小时数(传入的值超过 23 则增加月份中的天数)
(7)getMinutes()/setMinutes(分): 获取 / 设置日期中的分钟数(传入的值超过 59 则增加小时数)
(8)getSeconds()/setSeconds(秒): 获取 / 设置日期中的秒数
四, RegExp 类型
1. 创建方法
(1)字面量
var rep = / 模式(pattern)/ 标志(flags) ;
(2)构造函数
var rep = new RegExp('pattern','flags');
注: 模式参数是字符串, 某些情况下要对字符串进行双重转义.
如:
- // 字面量模式 /\[bc\]at/
- // 字符串 '\\[bc\\]at'
- // 字面量模式 /\w\\[hello\\]123/
- // 字符串 '\\w\\\\hello\\\\123'
2. 标志(flags)
a. g: 表示全局模式, 即模式将被应用于所有字符串, 而非在发现第一个匹配项时立即停止
b. i: 表示不区分大小写模式, 即在确定匹配项时忽略模式与字符串的大小写
c. m: 表示多行模式, 即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项
3. 元字符
模式中的元字符都必须转义, 正则表达式中的元字符有:( [ { \ ^ $ | ) ? * + .] }
4.RegExp 实例属性
RegExp 的每个实例都具有下列属性, 通过这些属性可以取得有关模式的各种信息.
(1)global: 布尔值, 表示是否设置了 g 标志
(2)ignoreCase: 布尔值, 表示是否设置了 i 标志
(3)lastIndex: 整数, 表示开始搜索下一个匹配项的字符位置, 从 0 算起
(4)multiline: 布尔值, 表示是否设置了 m 标志
(5)source: 正则表达式的字符串表示, 按照字面量形式而非传入构造函数中的字符串模式返回
5.RegExp 的实例方法
(1)exec(): 捕获匹配字符串, 接受一个参数, 即要应用模式的字符串
a. 返回包含第一个匹配信息的数组, 没有匹配项的情况返回 null
b. 返回的数组包含两个额外的属性: index 和 input.index 表示匹配项在字符串中的位置, input 表示应用正则表达式的字符串
c. 返回数组的第一项是匹配整个模式的字符串, 其他项是与模式中的捕获组匹配的字符串(没有捕获组, 则数组只包含一项)
d. 没有设置全局标志 (g), 每次只会返回第一个匹配项, 模式的 lastIndex 属性则始终不变; 设置了全局标志, 每次调用 exec() 则都会在字符串中查找下一个匹配项, 直到字符串末尾, 模式的 lastIndex 属性每次调用 exec()后都会增加
(2)test(): 判断目标字符串是否与某个模式匹配, 匹配返回 true, 否则返回 false
(3)toLocaleString()和 toString(): 返回正则表达式的字面量, 与正则表达式的创建方法无关
(4)valueOf(): 返回正则表达式本身
6.RegExp 构造函数的属性
RegExp 构造函数的属性, 基于所执行的最近一次正则表达式操作而变化
(1)input: 最近一次要匹配的字符串
(2)lastMatch: 最近一次的匹配项
(3)lastParen: 最近一次的匹配捕获组
(4)leftContext:input 字符串中 lastMatch 之前的文本
(5)multiline: 布尔值, 表示是否所有表达式都使用多行模式
(6)rightContext:Input 字符串中 lastMatch 之后的文本
来源: http://www.qdfuns.com/article/46690/5ea48461480350f505727415dfe98d19.html