引用类型

此文章是总结javascript高级程序设计第5章内容

Object 数据类型

  • object 是一个基础类型,其他所有类型都从object继承基本行为

创建Object实例的两种方法

// new 和Object 构造函数
var person = new Object() 
person.name = "Nicholas";
person.age = 29;
//对象字面量
var person = {
    name: "Nicholas",
    age : 29
};

通过对象字面量定义对象时,不会调用Object构造函数

Array 类型

  • ECMAScript 数组每一项可以保存任何类型的数据
  • 数组大小可以动态调整

创建数组的方式

// new 和 Array 构造函数
var colors = new Array ()

//数组字面量
var colors = ["red","blue","green"];

与对象一样,在使用数组字面量时,不会调用Array构造函数

转换方法

  • 所有对象都具有toLocalString(), toString()和valueOf()方法
  • toString() 会返回有数组中每个值得字符串形式拼接而成的一个以逗号分隔得字符串

  • valueOf() 返回的还是数组
var colors = ["red","blue","green"];
alert(colors.toString()) //"red,blue,green"
alert(colors.valueOf()) //["red","blue","green"]

栈方法(LIFO)

  • push()
  • pop()
var colors = ["red","blue"];
colors.push("brown"); //添加一项
colors[3] = "black"; //添加一项
alert(colors.length); //4

var item = colors.pop();
alert(item); //"black"

队列方法(FIFO)

  • shift()
  • unshift()
  • push()

用shift()和push(),可以像使用队列一样使用数组

var colors = new Array(); // 创建一个数组
var count = colors.push("red","green"); //推入两项
alert(count); //2

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

var item = colors.shift(); //取得第一项
alert(item);  // 'red'
alert(colors.length) //2

unshfit()和shift()刚好相反

var colors = new Array();
var count = colors.unshitf("red","green"); //推入两项
alert(count); //2

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

var item = colors.pop();  //取得最后一项
alert(item); //"green"
alert(colors.length); //2

重排序方法

  • reverse()
  • sort()
//reverse()
var values = [1,2,3,4,5]
alert(values.reverse()); //5,4,3,2,1

// sort()
var values = [0,1,5,10,15];
alert(values.sort()); //0,1,10,15,5

sort()方法比较的是字符串
在进行字符串比较时,10位于5前面

我们可以pass一个函数

var values = [0,1,5,10,15]
alert(values.sort((a,b)=>{
    return a > b
})); // 0,1,5,10,15

操作方法

  • concat()
  • slice()
//concat()
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);

alert(colors);  //red, green, blue
alert(colors2); //red,green,blue,yellow,black,brown

slice()接受一或两个参数,即要返回项的起始和结束位置(end 不包括)。在只有一个参数的情况下,slice()返回从该参数指定位置开始到当前数组末尾的所有项。

注意,slice()方法不会影响原始数组

var colors = ["red","green","blue","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);

alert(color2);  //green,blue,yellow,purple
alert(color3);  //green,blue,yellow

发表评论

电子邮件地址不会被公开。 必填项已用*标注