javascript高级程序设计笔记(四)

day 04

 引用类型


Object类型
 1,创建Object的方式有两种:
  (一)使用new操作符后跟Object构造函数,如下:
var person = new Object();
person.name = "Nico";
person.age = "82";
   (二)使用对象字面量表示法
var person = {
   name:"nico",
   age:82
};
 在使用对象字面量语法时,属性名也可以使用字符串。如下:
var person = {
     "name":"Nico",
     "age":82,
        5:true
};
另使用对象字面量语法时,如果留空花括号,则可以定义只包含默认属性和方法的对象。如下:
var person = {};    //同new  Object()相同,不会调用Object构造函数(ff 2及之前版本会调用)                     
person.name = "Nico";
person.age = 82;
Arrray类型
创建数组的基本方式有两种
 (一)一种是使用Array构造函数,如下:
var colors = new Array();
如果知道数组要保存的项目数量,也可以给构造函数传递该数量。使用时可以省略new 操作符,结果相同。
 (二)使用数组字面量表示法。由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下:
var colors = ["red","blue","green"];//创建一个包含3个字符的字符串的数组                                  
var names = []; //创建一个空数组
var values = [1,2];//不要这样,会创建一个包含2或3项的数组
与对象一样,在使用数组字面量表示法时,也不会调用Array构造函数(ff3及更早版本除外)。

栈方法
ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。如下:
var colors = new Array();//创建一个数组
var count = colors.push("red","blue");//推入两项
alert(count);//2

count  = colors.push("black");//推入另一项
alert(count);//3

var item = colors.pop();
alert(item);//"black"
alert(colors.length);//2
队列方法
采用shift()及push()方法来实现,shift()能够移除数组中的第一个项并返回该项,同时将数组长度减1,示例如下:
var colors = new Array();//创建一个数组
var count = colors.push("red","blue");//推入两项
count  = colors.push("black");//推入另一项
alert(count);//3
var item = colors.shift();//取得第一项
alert(item);//"red"
alert(colors.length);//2
ECMAScript还为数组提供了一个unshift()方法,它能在数组前端添加任意个项并返回新数组的长度,因此,可以使用unshift()和pop()的方法从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项。如下:
var colors = new Array();//创建一个数组
var count  = colors.unshift("red","blue");//推入两项
alert(count);//2

count = colors.unshift("black");//推入另一项
alert(count);

var item = colors.pop();
alert(item);
alert(colors.length);
总结:pop()方法是从数组末尾移除并返回该移除的值,push()方法添加数据到数组末尾,并且返回修改后的长度。shift()方法移除数组第一项并返回该移除的项,unshift()方法添加数组第一项数据并返回修改后的长度。

重排序方法
1,数组中存在两个直接排序的方法 reverse()和sort(),一个反转,一个升序排列。第一个方法不够灵活。sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,比较字符串中每个字符的ASCII码的大小,字符串比较ASCII码的方式是首先比较首字符的ASCII码,如果能够区分出大小则停止比较,如果相等则继续比较下一个字符,依次类推。即使数组中的每一项都是数值,sort()方法比较的也是字符串。
如下:
var values = [0,1,5,10];
values.sort();
alert(values);//0,1,10,5
sort()方法根据测试字符串的结果改变原来的顺序。因为数值5虽然小于10,但在进行字符串比较时,"10"则位于"5"的前面,于是就被修改了。因此,sort()可以接收一个比较函数作为参数(只能是函数,可选)。 参数函数一般会有两个参数,用于传递数组中的元素,并用于排序规则操作,如果返回值大于零,则两个值互换,否则不互换。以下是个简单的比较函数:
function compare(value1,value2){
	if(value1 < value2)
{
	return -1;
}else if(value1 > value2)
{
	return 1;
}else{
	return 0;
}
}
对于数值类型或者 valueOf()方法返回数值类型的对象类型,可以使用简单的比较函数。如下:
function compare(value1,value2)//升序
{
	return value2 - value1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值