《JavaScript高级程序设计》第五章笔记

介绍

这一章主要讲JavaScript里面的引用类型。JavaScript没有类(Class)和接口(Interface)这类的概念,所谓的引用类型,可以说是集合数据和方法的结构体。所有的对象,都是引用类型的实例。

对象类型(Object Type)

两种定义方法

1
2
3
4
5
6
7
8
9
//1
var person = new Object();
person.name = "Yutong";
person.age = 24;
//2
var person = {
name: "Yutong",
age: 24
};

两种get属性的方法

1
2
alert(person.name);
alert(person["name"]);

当属性名中有空格,或者别的会导致解析错误的,或者保留字关键字时,只能用第二种方法来access属性。

数组类型(Array Type)

两种定义方法

1
2
3
4
5
6
//1
var colors = new Array();
var colors = new Array(20);
var colors = new Array("red", "blue", "green");
//2
var colors = ["red", "blue", "green"];

数组的一些方法

栈方法(Stack Methods)

  1. push(),在数组末尾添加元素。
  2. pop(),在数组末尾移除元素。
    1
    2
    colors.push("yellow", "orange");
    colors.pop(); //"orange"

队列方法(Queue Methods)

  1. shift(),在数组头部移除元素。
  2. unshift(),和push()相同,在数组末尾添加元素。
    1
    colors.shift(); //"red"

重排序方法(Reordering Methods)

  1. reverse()方法,将数组中的元素倒序。
  2. sort()方法,将元素按照特定方式进行排序。默认的方法是通过对比字符串的方式。sort可以接受一个方法参数,定义排序的逻辑。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var arr = [1, 5, 3, 15, 13];
    arr.sort(); //[1, 13, 15, 3, 5];
    arr.sort(function(v1, v2) {
    if (v1 < v2) {
    return 1;
    } else if (v1 > v2) {
    return -1;
    } else {
    return 0;
    }
    }); //[1, 3, 5, 13, 15]

操作方法(Manipulation Methods)

一些特性

  1. 一个数组可以同时包含不同类型的元素。
  2. 如果用index来取数组中的元素,index大于数组的长度,将会自动调整数组的长度到index在的长度。没有定义过的元素值是undefined
    1
    2
    3
    var arr = new Array(3);
    arr[5] = 1;
    alert(arr.length); //6