引用类型的值(对象)是引用类型的一个实例。
引用类型是一种数据结构。
引用类型分类:
Object类型
Array类型
Date类型
RegExp类型
Function类型
Object类型
创建Object实例的方式:
1.使用new操作符后很Object构造函数
var person = new Object();
person.name = "Jack";
person.age = 29;
2.对象字面量表示方法
var person = {
name : "Jack",
age : 29
}
Array类型
创建数组的基本方式:
1.使用Array构造函数(new操作符可以省略)
var colors = new Array();
var colors = new Array(20);
var colors = new Array("red","blue","green");
2.使用数组字面量表示方法
var colors = ["red","blue","green"]; // 创建一个包含3个字符串的数组
var name = []; // 创建一个空数组
栈方法
后进先出
ECMAScript为数组专门提供了push()和pop()方法
队列方法
先进先出
提供了push()和shift()方法
unshift()和pop()方法,可以从相反的方向来模拟队列
重新排序方法
reverse()方法会反转数组项的顺序
sort()方法按升序排列数组项
sort()方法可以接受一个比较函数作为参数
function compare(value1, balue2){
if (value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
} else {
return 0;
}
}
var values = {0, 1, 5, 10, 15};
values.sort(conpare);
alert(values);
降序结果只要交换比较函数返回的值即可
操作方法
concat()方法可以基于当前数组中的所有项创建一个新数组
slice()能够基于当前数组中的一个或多个项创建一个新数组
splice()主要用途是向数组的中部插入项
删除——可以删除任意数量的项
要删除的第一项的位置和要删除的项数
插入——可以向指定位置插入任一项
起始位置、0、要插入的项
替换——可以指定位置插入任意数量的项,且同时删除任意数量的项
起始位置、要删除的项数、要插入的项
Date类型
Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始,经过的毫秒数来保存日期。
创建一个日期对象`
var now = new Date();
在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间
如果像根据特定日期和时间创建日期对象,必须传入表示该日期的毫秒数
ECMAScript提供两个方法:Date.parse()和Date.UTC()
RegExp类型
ECMAScript通过RegExp类型来支持正则表达式
var expression = /pettern/flags;
pattern——可以是任何简单或复杂的正则表达式
flags用以标明正则表达式的行为:
g——全局模式
i——不区分大小写模式
m——表示多行模式
Function类型
函数实际上是对象。
每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与摸个函数绑定。
函数声明语法定义:
function sum(num1, num2){
return num1 + num2;
}
函数表达式定义函数:
var sum = funtion(num1, num2){
return num1 + num2;
}
没有重载
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num){
return num + 200;
}
var result = addSomeNumber(100); // 300
函数声明与函数表达式
解析器会率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到它所在的代码才会真正被解析执行
函数内部属性
有两个特殊的对象:argument和this
阶乘函数
function factorial(num){
if (num <= 1){
return 1;
} else {
return num * argument.callee(num - 1);
}
}
factorial()函数的函数提内,没有在引用函数名factial,这样无论引用函数时用的是什么名字,都可以保证正常完成递归调用。
函数属性和方法
每个函数包含两个属性:length和prototype
length表示函数希望接收的命名参数个数
ECMAScript中的引用类而言,prototype是保存它们所有实例方法的真正所在。