JavaScript高級程序設計3學習筆記
引用類型有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()方法返回數組中每一項以字符串形式拼接的以逗號分隔的字符串
一些重要的數組操作方法
棧方法
LIFO結構,使用方法push()和pop(),push()方法接收任意類型的參數,從數組的末尾插入項,返回修改後數組的長度;POP()方法返回從數組末尾移除的最後一項。隊列方法
FIFO結構,使用方法shift()和push(),shift()方法移除數組第一項並返回這一項;使用unshift()和pop()可以從反方向來模擬隊列,unshift()方法從數組的前面插入項,並返回修改後的數組長度。重排序方法
方法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; } }
拼接、切片、刪除、插入、替換方法(用到concat(), slice(), splice()方法)
concat()和slice()方法都是創建數組的一個副本,不影響原數組。concat()方法參數是要拼接的數組項,slice()方法第一個參數是要返回項的起始位置,第二個參數是要返回項的結束位置(不包括),如果只有一個參數,則返回從該參數指定位置到數組末尾所有的項。
splice()方法的三個參數:第一個參數是起始位置,第二個參數是要刪除的項數,第三個參數是要插入的項,可以對傳入的參數進行改變,這個方法會影響原數組。位置方法(用到indexOf()和lastIndexOf()方法)
都可以有兩個參數,第一個參數表示要查找的項,第二個參數表示查找的起始位置(可選),方法indexOf()表示從前向後找,方法lastIndexOf()表示從後向前找。叠代方法:every(), filter(), forEach(), map(), some()
傳入方法的函數有三個參數:數組項的值,該項在數組中的位置和數組對象本身。歸並方法: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學習筆記