引用类型:一种数据结构,将数据与功能组织在一起。
Object类型
创建方法:
var person = new Object();
var person = {};
访问属性:
person['name']; //可通过变量访问
person.name;
Array类型
创建方法:
var colors = new Array();
var colors = [];
访问数组值:
colors[0];
数组的length属性:非只读,可以从数组的末尾移除项或向数组中添加新项
colors.length = colors.length -1;
colors[colors.length] = "black";
检测数组:
instanceof操作符
Array.isArray()方法
转换方法:
toLocaleString()、toString()、valueOf()
join() //只接受一个参数,该参数用作分隔符,然后返回包含所有数组项的字符串
栈方法:后进先出
push() //接收任意数量的参数,将其逐个添加到数组末尾,并返回修改后数组的长度
pop() //从数组的末尾移除最后一项
队列方法:先进先出
shift() //移除数组中第一个项并返回该项,同时数组长度减1
unshift() //在数组的前端添加任意个项,并返回新数组的长度
重排序方法:
reverse() //反转数组项的顺序
sort() //按升序排列数组,且该方法可以传入一个比较函数作为参数
操作方法:
concat() //基于当前数组的所有项创建一个新数组,即将接收到的参数添加到这个数组的副本的末尾,并返回新构建的数组
slice() //基于当前数组中的一个或多个项创建一个新数组,接收一个或俩个参数,即返回项起始和结束的位置
splice() //删除:指定俩个参数,要删除的第一项的位置和要删除的项数。
//插入:提供三个参数,起始位置,要删除的项数,要插入的项
//替换:提供指定三个参数,起始位置,要删除的项数,要插入的任意数量的项
位置方法:
俩个方法都接收俩个参数:要查找的项和查找起点位置的索引(可选) 没找到则返回-1,找到则返回位置
indexOf() //从前往后查
lastIndexOf() //从后往前查
迭代方法:
每个方法都接收俩个参数:要在每一项上运行的函数,运行该函数的作用域对象(可选)
传入这些方法中的函数会接收三个参数:数组项的值(item),该项在数组中的位置(index),数组对象本身(array)
every() //如果该函数对每一项都返回true,则返回true
filter() //返回该函数会返回true的项组成的数组
forEach() //没有返回值
map() //返回每次函数调用的结果组成的数组
some() //如果该函数任一项返回true,则返回true
归并方法:
俩个方法都会迭代数组的所有项,然后构建一个最终返回的值
且都接收俩个参数:在每一项上调用的函数,最为归并基础的初始值(可选)
而传给方法的函数接收四个参数:前一个值(prev),当前值(cur),项的索引(index),数组对象(array)
这个函数返回的任何值都会作为第一个参数自动传给下一项
且第一次迭代发送数组的第二项上
reduce() //从前往后遍历
reduceRight() //从后往前遍历
Date类型
创建方法:
var now = new Date();
在调用Date构造函数而不传递参数的情况下,新创建的对象将自动获得当前日期和时间。
Date.parse() //接收一个表示日期的字符串参数("月/日/年"),然后尝试根据中国字符串返回响应日期的毫秒数,如果该字符串不能表示日期,则返回NaN
Date.UTC() //同样返回表示日期的毫秒数。参数为:年份,基于0的月份,天(可选),小时(0-23,可选),分钟(可选),秒(可选),毫秒(可选)
Date.now() //表示调用这个方法时的日期和时间的毫秒数
日期格式化方法:
toDateString() //以特定于实现的格式显示星期几、月、日和年
toTimeString() //特定于实现的格式显示时,分,秒和时区
toLocaleDateString() //特定于地区的格式显示星期几、月,日和年
toLocaleTimeString() //特定于实现的格式显示时,分,秒
toUTCString() //以特定于实现的格式显示时,分,秒(推荐)
RegExp类型
正则表达式
var pattern = /[bc]at/i;
var pattern = new RegExp("[bc]at","i");
g:全局模式
i:不区分大小写
m:多行模式
模式中使用的所有元字符都必须转义:
( { \ ^ $ | ? * + . } )
RegExp实例属性:
global:布尔值,表示是否设置了g标志
ignoreCase:布尔值,表示是否设置了i标志
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起
multiline:布尔值,表示是否设置了m标志
source:正则表达式的字符串表示,按字面量形式而非传入构造函数中的字符串形式返回
RegExp实例方法:
exec() //接收一个参数,返回包含第一个匹配项信息的数组
//返回的数组有俩个属性:index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串
test() //接收一个字符串参数,在模式与该参数匹配的情况下返回true,反之返回false
RegExp构造函数属性:
input/lastMatch/lastParen/leftContext/multiline/rightContext
Function函数
函数名是函数的一个指针,故而函数可以有多个名字,但是不能被重复定义(没有重载)
创建方法:
function sum (num1,num2){
return num1+num2;
}
var sum = function(num1,num2){
return num1+num2;
}
使用不带圆括号的函数名是访问函数指针,而不是调用函数
函数内部属性:
arguments //包含传入函数的所有参数,是一个类数组对象,拥有一个callee属性,指向拥有这个arguments的函数
this //引用函数执行的环境对象
caller //保存着调用当前函数的函数的引用,若是在全局作用域调用当前函数,则其值为null
函数属性和方法:
length //表示函数希望接收的命名参数的个数
prototype //保存函数的实例方法
apply() //接收俩个参数:在其中运行函数的作用域(this),参数数组
call() //同样接收俩个参数:在其中运行函数的作用域(this),传递的参数需要逐个列举出来
bind() //创建一个函数的实例,其this值会被绑定到传给bind()函数的值
基本包装类型
对基本包装类型的实例调用typeof
会返回"object"
,而且所以基本包装类型的对象在转换为布尔类型时值都是true
Boolean类型
var falseObject = new Boolean(false);
var result = falseObject && true;
alert(result); //true
Number类型
var nunberObject = new Number(10);
toFixed(num) //表示带有0-20个小数位的数值
toExponential(num) //返回指数表示法
toPrecision(num) //返回固定的格式
String类型
var stringObject = new String("hello world");
字符方法:
//俩个方法都接收一个参数,基于0的字符位置
charAt() //以单字符字符串的形式返回给定位置的字符
charCodeAt() //以单字符字符串的形式返回给定位置的字符编码
字符串操作方法:
concat() //可接收任意多个参数,用于将一或多个字符串拼接起来,返回拼接得到的新的字符串
//这三个方法都会返回被操作字符串的一个子字符串
//接收以或俩个参数:指定子字符串开始位置,表示子字符串结束的位置
//slice和substring的第二参数指定子字符串最后一个字符后面的位置
//substr的第二参数则指定返回的字符个数
slice()
substr()
substring()
传入参数为负值时,slice()会将传入的负值与字符串的长度相加;
substr()将负的第一个参数加上字符串的长度,而将负的第二参数转换为0;
substring()则会把所有负值参数都转换为0
字符串位置方法:
indexOF()
lastIndexOf()
trim() //创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果
trimLeft()/trimRight()
大小写转换:
toLowerCase()
toUpperCase()
tolocaleLowerCase()
toLocaleUpperCase()
字符串匹配方法:
match() //只接收一个参数:正则表达式/RegExp对象,返回一个数组
search() //参数同上,返回字符串中第一个匹配项的索引;如果没有找到匹配项则返回-1
replace() //接收俩个参数:RegExp对象/字符串,字符串/函数;
//如果第一个参数为字符串,那么只会替代第一个子字符串
//要想替代所有的子字符串,只能提供一个全局(g)的正则表达式
//第二参数可以为一个函数:该函数可以传三个参数(模式的匹配项match,模式匹配在字符串中的位置pos,原始字符串)
split() //基于一个指定的字符将一个字符串分割成多个子字符串,并将结果放在一个数组中
//可以接收第二参数,用于指定数组的大小
htmlEscape() //可以转义四个字符:小于号、大于号、和号、双引号
localeCompare() //比较俩个字符串,返回:1,0,-1(该值取决实现)
//基于字符串再字母表中的排列顺序,字符串排在字符串参数之前返回-1
fromCharCode() //接收多个字符编码,返回字符串
单体内置对象
Global 对象
所有在全局中定义的属性和函数,最终都是Global对象的属性
Global作为Window对象的一部分而被实现,即全局作用中声明的所有变量和函数,都成为了window对象的属性
//下面俩个方法对URI进行编码,以便发送给浏览器
encodeURI() //主要用于整个URI进行编码
encodeURIComponent() //主要用于URI中的某一段进行编码
//对上面俩个函数处理得到的字符的解码
decodeURI()
decodeURIComponent()
//一个完整得ECMAscript解析器
eval()
eval()中创建的任何变量和函数都不会被提升,他们只是在eval()被执行的时候创建
Math 对象
Math.min() //确定一组数中的最小值
Math.max() //确定一组数中的最大值
Math.ceil() //执行向上舍入
Math.floor() //执行向下舍入
Math.round() //四舍五入
Math.random() //返回[0-1]的一个随机数
selectFrom(lowerValue,upperValue) //返回介于最大值与最小值之间的一个数值