一、數據類型 js中數據類型分為兩種,原始數據累次能夠和引用數據類型。 1.原始數據類型 2.引用數據類型 3.原始值和引用值 特別提醒的是,在js中,字元串被看做是原始類型,這意味著下麵的操作是非常耗記憶體的。 二、本地對象(內建對象) 1.Array對象 1.創建語法 2.屬性 3.方法 4.數組 ...
一、數據類型
js中數據類型分為兩種,原始數據累次能夠和引用數據類型。
1.原始數據類型
Undefined、Null、Boolean、Number、String是js中五種原始數據類型(primitive type)。
2.引用數據類型
引用類型通常叫作類(class),凡是以new創建出來的對象都是引用數據類型。包括new Boolean、new Number等原始類。
3.原始值和引用值
原始值是存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變數訪問的位置。
引用值時存儲在堆(heap)中的對象,也就是說,存儲在變數處的值是一個指針(point),指向存儲對象的記憶體處。
為變數賦值時,ECMAScript的解釋程式必須判斷該值是原始類型的還是引用類型的,從而把它們放到記憶體區域。
var a = 100; // 棧記憶體
var b = new Number(100); // 堆記憶體
console.log(a); // 數值
console.log(b); // 對象引用
console.log(b.valueOf()); // 獲取數字對象b的值
二、本地對象(內建對象)
ECMA-262把本地對象(native object)定義為“獨立於宿主換將的ECMAScript實現提供的對象”。本地對象就是ECMA-262定義的類(引用類型)。包括:
- Object Funciton
- Array String Boolean Number Date RegExp
- Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
1.Array對象
1.創建語法
var arr = [element0, element2, ...];
new Array();
new Array(size);
new Array(element0, element1, ...);
var arr = [100, 200, [100, 200], true, undefined, function() {
console.log("wtf.");
}, {name: "孫悟空", age: 18}];
2.屬性
constructor 返回對創建此對象的數組函數的引用。
length 設置或返回數組中元素的數目。
prototype 可以向對象添加屬性和方法。
3.方法
http://www.w3school.com.cn/jsref/jsref_obj_array.asp
push() 向數組的末尾添加一個或更多元素,並返回新的長度。
unshift() 向數組的開頭添加一個或更多元素,並返回新的長度。
pop() 刪除並返回數組的最後一個元素。
shift() 刪除並返回數組的第一個元素。
splice() 刪除元素,並向數組添加新元素。
slice() 從某個已有的數組返回選定的元素。
sort() 對數組的元素進行排序。
reverse() 顛倒數組中元素的順序。
concat() 連接兩個或更多的數組,並返回結果。
join() 把數組的所有元素放入一個字元串。元素通過指定的分隔符進行分隔。
toSource() 返回該對象的源代碼。
toString() 把數組轉換為字元串,並返回結果。
toLocaleString() 把數組轉換為本地數組,並返回結果。
valueOf() 返回數組對象的原始值
4.數組遍歷
var arr = [1, 3, 5, 7, 9, 11];
for(var i in arr){
console.log(arr[i]);
}
for(var j=0; j<arr.length; j++){
console.log(arr[j]);
}
for(var k=arr.length-1; k>=0; k--){
console.log(arr[k]);
}
function Person(name, force) {
this.name = name;
this.force = force;
}
var perArr = [
new Person("喬峰", 93),
new Person("段譽", 87),
new Person("虛竹", 89),
new Person("掃地僧", 97),
new Person("慕容博", 88),
new Person("慕容復", 85),
new Person("蕭遠山", 90),
];
var forceArr = [];
for (var i in perArr){
if (perArr[i].force >= 90){
forceArr.push(perArr[i]);
}
}
console.log(forceArr);
2.String對象
1.創建
new String(s);
String(s);
// 字元串在底層是以字元數組的形式存儲的,這源於js對字元串奇葩的設置:它是原始類型而不是引用類型。在其它大多數語言中,字元串都是引用類型。
2.屬性
constructor 對創建該對象的函數的引用
length 字元串的長度
prototype 允許您向對象添加屬性和方法
3.方法
http://www.w3school.com.cn/jsref/jsref_obj_string.asp
concat() 連接字元串。
split() 把字元串分割為字元串數組。
slice() 提取字元串的片斷,併在新的字元串中返回被提取的部分。
indexOf() 檢索字元串。
lastIndexOf() 從後向前搜索字元串。
substr() 從起始索引號提取字元串中指定數目的字元。
substring() 提取字元串中兩個指定的索引號之間的字元。
charAt() 返回在指定位置的字元。
charCodeAt() 返回在指定的位置的字元的 Unicode 編碼。
fromCharCode() 從字元編碼創建一個字元串。
match() 找到一個或多個正則表達式的匹配。
replace() 替換與正則表達式匹配的子串。
search() 檢索與正則表達式相匹配的值。
toSource() 代表對象的源代碼。
toString() 返回字元串。
valueOf() 返回某個字元串對象的原始值。
localeCompare() 用本地特定的順序來比較兩個字元串。
anchor() 創建 HTML 錨。
toLocaleLowerCase() 把字元串轉換為小寫。
toLocaleUpperCase() 把字元串轉換為大寫。
toLowerCase() 把字元串轉換為小寫。
toUpperCase() 把字元串轉換為大寫。
big() 使用大號字體顯示字元串。
small() 使用小字型大小來顯示字元串。
bold() 使用粗體顯示字元串。
italics() 使用斜體顯示字元串。
sup() 把字元串顯示為上標。
sub() 把字元串顯示為下標。
strike() 使用刪除線來顯示字元串
link() 將字元串顯示為鏈接。blink() 顯示閃動字元串。fontcolor() 使用指定的顏色來顯示字元串。fontsize() 使用指定的尺寸來顯示字元串。fixed() 以打字機文本顯示字元串。
3.RegExp
1.創建
new RegExp(pattern, attributes);
/pattern/attributes;
參數 pattern 是一個字元串,指定了正則表達式的模式或其他正則表達式。
參數 attributes 是一個可選的字元串,包含屬性 "g"、"i" 和 "m",分別用於指定全局匹配、區分大小寫的匹配和多行匹配。
2.屬性
global RegExp 對象是否具有標誌 g。
ignoreCase RegExp 對象是否具有標誌 i。
lastIndex 一個整數,標示開始下一次匹配的字元位置。
multiline RegExp 對象是否具有標誌 m。
source 正則表達式的源文本。
3.方法
http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
compile 編譯正則表達式。
exec 檢索字元串中指定的值。返回找到的值,並確定其位置。
test 檢索字元串中指定的值。返回 true 或 false。
4.支持正則表達式的 String 對象的方法
search 檢索與正則表達式相匹配的值。
match 找到一個或多個正則表達式的匹配。
replace 替換與正則表達式匹配的子串。
split 把字元串分割為字元串數組。
關於match
如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。
如果 regexp 具有標誌 g,則 match() 方法將執行全局檢索,找到 stringObject 中的所有匹配子字元串。若沒有找到任何匹配的子串,則返回 null。
match會將匹配到的結果返回到一個數組對象中,不論是一次或是多次匹配。
在全局檢索模式下,match() 即不提供與子表達式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()
var str = "1234Like123Array789language";
result = str.match(/[a-zA-z]+/gi);
console.log(result instanceof Array); //true
console.log(result); // [ 'Like', 'Array', 'language' ]
var str = "1234Like123Array789language";
var match = str.match(/[a-zA-z]+/gi);
console.log(match);
var reg = new RegExp("(?<word>[a-zA-z]+)", "g");
var result;
var arr = [];
while ((result = reg.exec(str)) !== null){
// console.log(result);
// console.log(result instanceof Array);
// console.log(reg.lastIndex);
arr.push(result);
}
console.log(arr);
4.Date
1.創建
var myDate=new Date();
2.屬性
constructor 返回對創建此對象的 Date 函數的引用。
prototype 可以向對象添加屬性和方法。
3.方法
http://www.w3school.com.cn/jsref/jsref_obj_date.asp
Date() 返回當日的日期和時間。
getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
etDay() 從 Date 對象返回一周中的某一天 (0 ~ 6)。
getMonth() 從 Date 對象返回月份 (0 ~ 11)。
getFullYear() 從 Date 對象以四位數字返回年份。
getHours() 返回 Date 對象的小時 (0 ~ 23)。
getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。
getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
setDate() 設置 Date 對象中月的某一天 (1 ~ 31)。