1. 程式人生 > >JavaScript高級程序設計3學習筆記

JavaScript高級程序設計3學習筆記

屬性表 函數作為參數 所有 方法參數 date類型 拼接 reduce 方括號 結構

引用類型有Object、Array、Date、RegExp、Function、基本包裝類型

創建一個對象實例用new + 構造函數,比如:var obj = new Object();

Object類型

還可以用對象字面量表示法來表示對象:

var person = {
    name : "harry",
    age : 29
};

訪問對象的屬性(或使用對象的方法來操作數)使用點表示法或者方括號(適用於屬性表示法),例如

alert(person["name"]);           //"harry"
alert(person.name);               //"harry"

Array類型

兩種創建數組的方法,構造函數和數組字面量表示法:

  • 構造函數:var colors = new Array(3); 或者 var colors = new Array("red", "blue");,其中操作符new可以省略,傳入的參數是數值表示數組的項數,傳入的參數是其他類型則表示數組項的值。

  • 數組字面量:var colors = ["red", "blue", "green"];

所有數組對象都有屬性length,方法toLocaleString(), toString()和valueOf(),其中toString()方法返回數組中每一項以字符串形式拼接的以逗號分隔的字符串

一些重要的數組操作方法

  1. 棧方法
    LIFO結構,使用方法push()和pop(),push()方法接收任意類型的參數,從數組的末尾插入項,返回修改後數組的長度;POP()方法返回從數組末尾移除的最後一項。

  2. 隊列方法
    FIFO結構,使用方法shift()和push(),shift()方法移除數組第一項並返回這一項;使用unshift()和pop()可以從反方向來模擬隊列,unshift()方法從數組的前面插入項,並返回修改後的數組長度。

  3. 重排序方法
    方法reverse()反轉數組項的順序,sort()方法會調用每個數組項的toString()方法,比較得到的字符串,按升序排列,可以接收一個比較函數作為參數來比較數組項:

    function compare(value1, value2) {
    if (value1 < value2) {
        return -1;
    } else if (value1 > value2) {
        return 1;
    
    } else {
        return 0;
    }
    }

    另外一個按降序排列的比較函數:

    function compare(value1, value2) {
    if (value1 < value2) {
        return 1;
    } else if (value1 > value2) {
        return -1;
    
    } else {
        return 0;
    }
    }
  4. 拼接、切片、刪除、插入、替換方法(用到concat(), slice(), splice()方法)
    concat()和slice()方法都是創建數組的一個副本,不影響原數組。concat()方法參數是要拼接的數組項,slice()方法第一個參數是要返回項的起始位置,第二個參數是要返回項的結束位置(不包括),如果只有一個參數,則返回從該參數指定位置到數組末尾所有的項。
    splice()方法的三個參數:第一個參數是起始位置,第二個參數是要刪除的項數,第三個參數是要插入的項,可以對傳入的參數進行改變,這個方法會影響原數組

  5. 位置方法(用到indexOf()和lastIndexOf()方法)
    都可以有兩個參數,第一個參數表示要查找的項,第二個參數表示查找的起始位置(可選),方法indexOf()表示從前向後找,方法lastIndexOf()表示從後向前找。

  6. 叠代方法:every(), filter(), forEach(), map(), some()
    傳入方法的函數有三個參數:數組項的值,該項在數組中的位置和數組對象本身。

  7. 歸並方法:reduce()和reduceRight()
    reduce()從數組的第一項遍歷到最後一項,reduceRight()則從後向前遍歷,對數組所有的項求和的代碼例子:

    var values = [1, 2, 3, 4, 5];
    var sum = values.reduce(function(pre, cur, index, array) {
    return pre + cur;
    });
    alert(sum);   //15

Date類型

Function類型

兩種構造函數方法:函數聲明和函數表達式,函數聲明可以在聲明之前調用函數,而函數表達式不行:

alert(sum(10, 20));                //30
function sum(num1, num2) {
    return num1 + num2;
}
alert(sum(10, 20));                //不能正常運行
var sum = function(num1, num2) {
    return num1 + num2;
}

JavaScript高級程序設計3學習筆記