1. 程式人生 > >JS的內建物件(Date、String、Array、Math、Event)

JS的內建物件(Date、String、Array、Math、Event)

1. 日期物件Date

var myDate = new Date();// 建立一個時間物件的例項。預設是電腦的系統時間。
也可自定義時間:var d = new Date(2017,10,1);或 var d = new Date("oct 1,2017");
有了時間物件,我們可以使用它的方法來獲取或設定相應的值:
一、獲取:
1. myDate.getTime(); // 獲取時間,以毫秒為單位從1970年1月1日到現在的毫秒數。
2. myDate.getFullYear();//獲取年份(四位數表示) 常用。
3. myDate.getYear(); // 獲取年份    
4. myDate.getMonth(); // 獲取月份,1-12月對應的值是:0-11
5. myDate.getDay(); // 獲取星期幾,週日到週六分別對應0-6
6. myDate.getDate(); // 獲取日期,返回某月中的一天,1-31
7. myDate.getHours(); // 獲取小時,24小時制 0-23
8. myDate.getMinutes(); // 獲取分鐘 0-59
9. myDate.getSeconds(); // 獲取秒 0-59
10. myDate.getMilliseconds(); // 獲取毫秒數 0-999
11. myDate.getTimezoneOffset(); // 獲取本地時間與格林威治標準時間 (GMT) 的分鐘差
12. myDate.getUTCFullYear(); // 根據世界時獲取四位數的年份
13. myDate.getUTCHours(); // 根據世界時獲取小時 0-23
14. 其他獲取UTC方法同上。在get後加大寫UTC
二、設定時間(方法和獲取類似)
1. myDate.setFullYear();//獲取年份(四位數表示) 常用。
2. myDate.setMonth(); // 獲取月份,1-12月對應的值是:0-11
3. myDate.setHours(); // 獲取小時,24小時制 0-23
4. 其他設定時間方法參照上面三個的使用方法
三、時間物件的其他方法
1. myDate.toString(); // 把 Date 物件轉換為字串。
2. myDate.toTimeString(); // 把 Date 物件的時間部分轉換為字串。
3. myDate.toDateString(); // 把 Date 物件的日期部分轉換為字串。
4. myDate.toGMTString(); // 請使用 toUTCString() 方法代替。
5. myDate.toUTCString(); // 根據世界時,把 Date 物件轉換為字串。
6. myDate.toLocaleString(); // 根據本地時間格式,把 Date 物件轉換為字串。
7. myDate.toLocaleTimeString(); // 根據本地時間格式,把 Date 物件的時間部分轉換為字串。
8. myDate.toLocaleDateString(); // 根據本地時間格式,把 Date 物件的日期部分轉換為字串。
9. myDate.valueOf(); // 返回 Date 物件的原始值(即從1970年1月1號到物件所在時間的毫秒數)。

示例程式碼:

var myDate = new Date();
console.log(myDate.getTime()); // 1499660923853
console.log(myDate.getFullYear()); // 2017
console.log(myDate.getYear()); // 117
console.log(myDate.getMonth()); // 6
console.log(myDate.getDay()); // 1
console.log(myDate.getDate()); // 10
console.log(myDate.getHours()); // 12
console.
log(myDate.getMinutes()); // 28 console.log(myDate.getSeconds()); // 43 console.log(myDate.getMilliseconds()); // 853 console.log(myDate.getTimezoneOffset()); // -480 console.log(myDate.getUTCFullYear()); // 2017 console.log(myDate.getUTCHours()); // 4 console.log(myDate.setFullYear(2020)); // 1594355323853 console.log
(myDate.toString()); // Fri Jul 10 2020 12:28:43 GMT+0800 (CST) console.log(myDate.toTimeString()); // 12:28:43 GMT+0800 (CST) console.log(myDate.toDateString()); // Fri Jul 10 2020 console.log(myDate.toUTCString()); // Fri, 10 Jul 2020 04:28:43 GMT console.log(myDate.toLocaleString()); // 2020/7/10 下午12:28:43 console.log(myDate.toLocaleTimeString()); // 下午12:28:43 console.log(myDate.toLocaleDateString()); // 2020/7/10 console.log(myDate.valueOf()); // 15943553238530

2. 字串物件

2-1 常見的字串的寫法

  1. var myString = new String(“Hello World!”); // 建立新字串
  2. var myString = String(“Hello World!”); // 將括號裡的轉化為字串
  3. var myString = “Hello World!”; //最常見的寫法

2-2 字串的常見屬性和方法

var myString = "Hello World!";

2-2-1 toUpperCase() toLowerCase()大小寫轉化

// 建立新字串,不修改原字串,可用來賦值給新變數
toUpperCase();轉化為大寫
toLowerCase();轉化為小寫
myString.toUpperCase(); // HELLO WORLD!
myString.toLowerCase(); // hello world!

2-2-2 length 屬性

myString.length; // 12
獲取字串的長度是多少,這個是個屬性,不加括號。

2-2-3 concat 連線兩個字串

var mystr1 = "a";
var mystr2 = "b";
mystr1.concat(mystr2); // "ab"

2-2-4 charAt 返回指定位置字元

charAt(index);
myString.charAt(1); // e
返回下標為1的位置的字元,下標從0開始

2-2-5 indexOf 返回指定字串首次出現的位置

indexOf("str");
indexOf("str",startPos); 
myString.indexOf("l"); // 2
返回“l”首次出現的位置,從0開始。
myString.indexOf("l",4); // 9(別忘了空格)
返回“l”從下標4開始,第一次出現的位置。(下標從0開始)
注:
    若沒找到,則返回-1;
    lastIndexOf();最後一次出現的位置

2-2-6 search 返回指定正則匹配的字串首次出現的位置

var myReg = /l/;
或者 var myReg = new RegExp("l");
myString.search(myReg); // 2

2-2-7 split 字串分割

spilt(","); // 以逗號為分割符將字串分割為陣列。
split(";",3) // 以分號為分割符將字串分割為陣列,最多分割3次。
myString.split(" "); // ["Hello", "World!"]

2-2-8 substring 提取兩個指定位置之間的字元

// 建立新字串,不修改原字串,可用來賦值給新變數
substring(startPos,stopPos); //返回內容從start~stop-1,不包括stop位置
startPos:非負整數(若為負,則變為0),開始位置(包含該位置)
stopPos:非負整數(若為負,相當於起始位置為0,結束位置為startPos位置),停止位置(不包含該位置),不寫預設到字串結尾(包含最後一個位置)。
myString.substring(0,3); // Hel
myString.substring(-1,3); // Hel
myString.substring(3,-1); // Hel

2-2-9 slice 提取指定長度的字串

// 建立新字串,不修改原字串,可用來賦值給新變數
slice(startPos,stopPos); //返回內容從start~stop-1,不包括stop位置,當stop位置在start位置之前,則匹配不到。
startPos:開始位置(包含該位置),若為負,則指倒數第幾個
stopPos:停止位置(不包含該位置),若為負,則指倒數第幾個。不寫預設到字串結尾(包含最後一個位置)。
myString.slice(0,3); // Hel
myString.slice(-1,3); // "",沒匹配到,為空
myString.slice(3,-1); // lo World

2-2-10 substr 提取指定長度的字串

// 建立新字串,不修改原字串,可用來賦值給新變數
substr(startPos,length); //返回從開始位,之後的指定長度字串
startPos:非負整數(若為負,則變為從倒數第幾個開始數起),開始位置(包含該位置)
length:提取的字串長度,不寫預設到結尾處
myString.substr(2,2); // ll
myString.substr(-3,2); // ld
myString.substr(2,-1); // "",沒匹配到。為空

2-2-11 replace 替換指定字串

// 建立新字串,不修改原字串,可用來賦值給新變數
replace(被替換掉的內容,用來替換的內容);
注:被替換內容時字串或者沒帶全域性標識的正則時,replace只會替換第一個匹配的字元,當用正則並加上全域性標識g時,可以替換所有匹配到的值。
myString.replace("!","。"); //Hello World。
var str = "aaaaa";
str.replace("a","b"); // baaaa
str.replace(/a/,"b"); // baaaa
str.replace(/a/g,"b"); // bbbbb

2-2-12 charCodeAt 返回指定位置的字元的編碼

charCodeAt(index);返回下標index的位置的字元編碼。
myString.charCodeAt(3); // 108

2-2-13 fromCharCode() 返回指定編碼對應的字元

String.fromCodeAt(編碼);返回指定編碼對應的字串。(這是原生字串物件String自帶方法)
String.fromCodeAt(108); // l

2-2-14 localeCompare 用本地特定的順序來比較兩個字串

返回值有三個:-1 前面小於後面;0 前面等於後面;1 前面大於後面。
var str1 = 'a';
var str2 = 'b';
str1.localeCompare(str2); // -1

2-2-15 sub()、sup() 將字串顯示為下/上標

console.log(myString.sub()); // <sub>Hello World!</sub>
document.write(myString.sub()); // Hello World!(下標的形式輸出的,字型較小)

3. 陣列物件

3-1 常見的陣列的寫法

陣列Array,定義陣列的方法:
1. var 陣列名 = new Array(); 空陣列
2. var 陣列名 = new Array(n); 有n個空元素的陣列
3. var 陣列名 = ['元素1','元素2','元素3']; 有3個元素的陣列,最常見的寫法。當是空陣列時直接寫[];

3-2 陣列的常見屬性和方法

var myArray = [1,2,3,'a','b'];
var arr1 = [1,2,3,4]
var arr2 = ['a','b','c']

3-2-1 下標屬性

myArray[3]; // a 返回陣列下標為3(即第四個)的元素的值。下標從0開始

3-2-2 length屬性

myArray.length; // 5 返回陣列的長度

3-2-3 concat陣列連線

連線後建立新的陣列
arr1.concat(arr2); // [1,2,3,4,'a','b','c']
arr1.concat(5); // [1,2,3,4,5]

3-2-4 join 用指定的分割符將陣列連線為字串

myArray.join('-'); // 1-2-3-a-b (不寫預設使用","連線)

3-2-5 reverse 顛倒陣列元素順序

改變原陣列,不建立新陣列
var arr3 = [1,2,3,4]
arr3.reverse(); // [4,3,2,1]
console.log(arr3); // [4,3,2,1]

3-2-6 pop、push 在陣列末尾刪除/新增一個元素

改變原陣列,不建立新陣列
var arr4 = [1,2,3,'a'];
arr4.pop(); // a 返回值是刪除的那個元素
arr4.push('b'); // 4 返回的是新增元素後陣列的新長度
arr4; // [1,2,3,'b']

3-2-7 shift、unshift 在陣列頭部刪除/新增一個元素

改變原陣列,不建立新陣列
var arr5 = [1,2,3,'a'];
arr5.shift(); // 1 返回值是刪除的那個元素
arr5.unshift('b'); // 4 返回的是新增元素後陣列的新長度
arr5; // ['b',2,3,'a']

3-2-8 slice 獲取指定位置間的元素

返回的是新的陣列,不改變原來的陣列
slice(startPos,stopPos); //返回內容從start~stop-1,不包括stop位置,當stop位置在start位置之前,則匹配不到。
startPos:開始位置(包含該位置),若為負,則指倒數第幾個
stopPos:停止位置(不包含該位置),若為負,則指倒數第幾個。不寫預設到字串結尾(包含最後一個位置)。
var arr6 = [1,2,3,4,5]
arr6.slice(0,2); // [1, 2]
arr6.slice(-1,2); // [],沒匹配到,為空陣列
arr6.slice(1,-1); // [2, 3, 4]
arr6; // [1,2,3,4,5]

3-2-9 splice 從數組裡選取元素可實現新增和刪除

修改原陣列,不建立新陣列,但是返回值是和splice(startPos,length)這一部分匹配的內容
splice(startPos,length); // 刪除
splice(startPos,length,新元素,新元素...) // 用新元素替換舊元素
splice(startPos,0,新元素,新元素...) // 新增新元素,因為刪除長度為0,可以認為沒刪除 
var arr7 = [1,2,3,4,5,6]
arr7.splice(1,3);         // [2,3,4]
arr7;                     // [1,5,6]
var arr8 = [1,2,3,4,5,6];
arr8.splice(1,3,'a','b'); //[2,3,4]
arr8;                     //[1, "a", "b", 5, 6] 
var arr9 = [1,2,3,4,5,6];
arr9.splice(1,0,'a','b'); //[]
arr9;                     //[1, "a", "b", 2, 3, 4, 5, 6]

3-2-10 sort 陣列排序

修改原陣列,但不建立新陣列。
適用於字串排序,數字的話會把數字當字串處理。
var arr10 = ['a','d','g','b','c']
var arr11 = [1,2,5,15,20,3,34]  
var arr12 = ['1','2','5','15','20','3','34']
arr10.sort(); // ["a", "b", "c", "d", "g"]
arr11.sort(); // [1, 15, 2, 20, 3, 34, 5]
arr12.sort(); // ["1", "15", "2", "20", "3", "34", "5"]

sort();括號裡可以跟引數,引數可以是函式

var arr13 = [1,2,5,15,20,3,34]
arr13.sort(function(n1,n2){ //機制是:return值是負的話,n1<n2;為正的話,n1>n2;為0的話,n1=n2。
    return n1 - n2; // 數字升序排列
    // return n2 - n1; // 數字降序排列
});                     // [1, 2, 3, 5, 15, 20, 34]
arr13;                  // [1, 2, 3, 5, 15, 20, 34]

3-2-11 toString 將陣列轉化為字串

var arr14 = ['a','b','c']
arr14.toString(); // a,b,c 以逗號連線

4. Math 數學物件

4-1 Math的屬性

1. E;  (常量e); 2. LN2; (ln2); 3. LN10; (ln10); 4. LOG2E; (log2e) 5. LOG10E;
6. PI; (π);7. SQRT2; (根號二) ; 8. SQRT1_2; (根號二分之一)
常用:Math.PI;   // π

4-2 Math的方法

Math.abs(x); (|x|絕對值)
Math.ceil(1.01); // 2 向上取整
Math.floor(1.99); // 1 向下取整
Math.max(x,y); // 取xy中的最大值
Math.min(x,y); // 取xy中的最小值
Math.random(); // 0~1 之間的隨機數;
Math.round(x); // 四捨五入為整數
Math.sin(x); // 三角函式正弦sin
Math.asin(x); // 三角函式反正弦
Math.exp(x); // e的x次方
Math.log(x); // ln(x)
Math.pow(x,y); // x的y次方
Math.sqrt(x); // 根號x
注:max,min是不支援陣列的。

5. Event 事件物件

function (e){
    var oEvent = e || event; // 這是對瀏覽器進行相容。event是IE版本的寫法,
    // 滑鼠事件
    oEvent.clientX; // 事件觸發時滑鼠在可視區的x座標的值。
    oEvent.clientY; // 事件觸發時滑鼠在可視區的y座標的值。
    // 鍵盤事件
    oEvent.keyCode; // 當前觸發事件的鍵盤按鍵對應的鍵碼。不同的鍵鍵碼不同
    // 鍵盤其他屬性
    oEvent.ctrlKey/shiftKey/altKey; // 這些是布林值,當按著ctrl、shift、alt時為true;
    // 阻止預設行為
        // 方法一,普通寫法:
        return false;
        // 方法二,常規寫法:
        oEvent.preventDefault(); // IE的方法,IE8以下不支援。
        oEvent.returnValue = false; // W3C方法,火狐不支援。
    // 阻止冒泡
    oEvent.cancelBubble = true; // IE方法,但新版本火狐和chorme也支援。
    oEvent.stopPropagation(); // W3C方法,IE不支援。
}
附常見的事件方式:
1. onclick 滑鼠點選
2. onmouseover 滑鼠劃過
3. onmouseout 滑鼠移開
5. onmousemove 滑鼠移動
6. onmouseup 滑鼠左鍵擡起
7. onmousedown 滑鼠左鍵按下
8. ondblclick 滑鼠雙擊
9. onsubmit 表單提交事件
10. oncontextmenu 滑鼠右鍵開啟選單事件
11. onfocus 滑鼠聚焦
12. onblur 滑鼠失焦
13. onselect 內容選中
14. onchange 內容發生改變
15. onload 載入事件
16. onunload 解除安裝事件
17. onkeydown 鍵盤按下(常配合keyCode鍵碼使用)
18. onkeyup 鍵盤擡起(常配合keyCode鍵碼使用)
19. onkeypress 鍵盤點選(按下加擡起)(常配合keyCode鍵碼使用)