內置對象概述
-
JavaScript中的對象分爲以下3中:
(1)自定義對象
(2)內置對象
(3)瀏覽器對象
-
內置對象就是指JS語言自帶的一些對象,這些對象供開發者使用,並提供了一些常用的或是最基本而必要的功能(屬性或方法)。
-
內置對象的優點:幫助開發者快速開發。
-
JavaScript提供了多個內置對象:Math、Date、Array、String等。
Math對象
- Math數學對象不是一個構造函數,使用使用時不需要new,而是直接使用裏面的屬性和方法即可。
1.Math.max()/Math.min()
Math.max的語法結構如下:
Math.max([value1[,value2,...]])
注意:
1、如果給定的參數中至少有一個參數無法被轉換成數字,則會返回NaN;
2、如果沒有參數,則返回-Infinity
2.Math.PI
- 獲取圓周率的值。
3.Math.abs()
- 取某個數的絕對值。
console.log(Math.abs(1)); //1
console.log(Math.abs('-1')) //1
console.log(Math.abs('蟹黃堡')); //NaN
4.Math.floor()
- 向下取整。
console.log(Math.floor(1.1)); //1
5.Math.ceil()
- 向上取整。
console.log(Math.ceil(1.1)); //2
6.Math.round()
- 四捨五入,但.5比較特殊,都是往大的取。
console.log(Math.round(1.1)); //1
console.log(Math.round(1.5)); //2
console.log(Math.round(-1.5)); //-1
7.隨機數方法 random()
- Math.random()函數返回的是一個浮點數,僞隨機數的範圍在[0,1),不包括1。
- Math.random()不跟參數。
//得到一個兩數之間的隨機整數。包括兩個數在內
function getRandom(min, max){
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
日期對象
-
日期對象通過創建Date實例來處理日期和時間。
-
Data日期對象是一個構造函數,必須使用new實例化對象。
-
Date()方法如果沒有參數,則返回當前系統的當前時間;如果括號裏面有參數,則放回參數裏面的時間(參數有數字型:2020,04,21,17,4,30;也有字符串型:‘2020-05-21 17:04:30’或者’2020/5/21 17:04:30’)。
-
獲取日期指定部分的方法如下表:
方法名 | 說明 | 代碼 |
---|---|---|
getFullYear() | 獲取當年 | var time = new Date(); console.log(time.getFullYear()); |
getMonth() | 獲取當月(範圍是0~11,獲取月份的時候實際值會比當月-1, 所以獲取當月時要+1;而Data對象中的參數如果是數字型, 那麼月份的輸出結果會比設置的數值+1) |
var time = new Date(); console.log(time.getMonth()+1); |
getDate() | 獲取當天日期 | var time = new Date(); console.log(time.getDate()); |
getDay() | 獲取星期幾(週日0到週六6) | var time = new Date(); console.log(time.getDay()); |
getHours() | 獲取當前小時 | var time = new Date(); console.log(time.getHours()); |
getMinutes() | 獲取當前分鐘 | var time = new Date(); console.log(time.getMinutes()); |
getSeconds() | 獲取當前秒鐘 | var time = new Date(); console.log(time.getSeconds()); |
-
時間戳:
(1)通過valueOf()或getTime()的方法獲取
var date = new Date(); console.log(date.valueOf()); console.log(date.getTime());
(2)簡單寫法(最常用)
var date1 += new Date(); console.log(date1);
(3)HTML5新增的寫法
console.log(Date.now());
-
時間戳轉換爲天時分秒的公式如下:
天數:d = parseInt(總秒數 / 60 /60 /24);
小時數:h = parseInt(總秒數 / 60 /60 %24);
分數:m = parseInt(總秒數 / 60 % 60);
秒數:s = parsrInt(總秒數 % 60);
數組對象
-
創建數組對象的兩種方式:
(1)字面量方式
var arr = [1,2,3]; cosnole.log(arr[0]);
(2)new Array()
var arr1 = new Array(); //創建一個空數組 var arr2 = new Array(2); //如果只有一個數字,表示只創建一個長度爲2,裏面都是empty元素 var arr3 = new Array(2,3) //如果不只一個數字,則表示創建一個元素包括2和3的數組
-
檢查是否爲數組的方法:
(1)instanceof(返回一個布爾值)
var arr = [1,2,3]; console.log(arr instanceof Array);
(2)Array.isArray(參數)(返回一個布爾值)
var arr = [1,2,3]; console.log(Array.isArray(arr));
-
添加刪除數組元素的方法(會改變原數組):
方法名 | 說明 | 返回值 |
---|---|---|
push(參數1…) | 末尾添加一個或多個元素,修改了原數組 | 返回新數組的長度 |
pop() | 刪除數組最後一個元素,數組長度減1,修改了原數組 | 返回刪除的那個元素值 |
unshift(參數1…) | 向數組的開頭添加一個或多個元素,修改了原數組 | 返回新數組的長度 |
shift() | 刪除數組的第一個元素,數組長度減1,修改了原數組 | 返回刪除的那個元素值 |
//舉例:
var arr = [1,2,3];
arr.push(4,5);
console.log(arr); //輸出結果[1,2,3,4,5]
var arr = [1,2,3];
consol.log(arr.push(4,5)); //輸出結果是5
var arr = [1,2,3];
arr.pop();
console.log(arr); //輸出結果[2,3]
var arr = [1,2,3];
console.log(arr.pop()); //輸出結果是1
- 數組排序(會改變原數組):
方法名 | 說明 | 是否修改原數組 |
---|---|---|
reverse() | 顛倒數組中元素的順序,無參數 | 該方法會改變原來的數組,並返回新數組 |
sort() | 對數組的元素進行排序 | 該方法會改變原來的數組,並返回新數組 |
//舉例:
var arr = [1,2,3];
arr.reverse();
console.log(arr); //輸出結果是:[3,2,1]
var arr = [1,2,4,5,3];
arr.sort();
console.log(arr); //輸出結果是[1,2,3,4,5]
其中,sort()比較特殊,對個位數能正確排序,但對兩位數以上就會出現問題,解決辦法如下:
var arr = [12,22,32,56,44,2]
//升序排序:
arr.sort(function(a,b){
return a - b;
})
//降序排序:
arr.sort(function(a,b){
return b - a;
})
- 數組索引方法(不會改變原來數組):
方法名 | 說明 | 返回值 |
---|---|---|
indexOf(‘要查找的字符’,開始的位置) | 數組中查找給定元素的第一個索引 | 如果存在返回索引號,如果不存在,則返回-1 |
lastIndexOf(‘要查找的字符’,開始的位置) | 在數組中的最後一個的索引 | 如果存在返回索引號,如果不存在,則返回-1 |
- 數組轉換爲字符串(不會改變原來數組):
方法名 | 說明 | 返回值 |
---|---|---|
toString() | 把數組轉換成字符串,逗號分隔每一項 | 返回一個字符串 |
join(‘分隔符’) | 把數組中的所有元素轉換爲一個字符串(默認以逗號分隔) | 返回一個字符串 |
//toString():
var arr = [1,2,3];
console.log(arr.toString()); //字符串:1,2,3
//join('分隔符'):
var arr1 = ['red','green','blue'];
console.log(arr1.join()); //字符串:red,green,blue
console.log(arr1.join('&')); //字符串:red&green&blue
- 其他方法:
方法名 | 說明 | 返回值 |
---|---|---|
concat() | 連接兩個或多個數組,不影響原數組 | 返回一個新的數組 |
slice() | 數組截取slice(begin,end),不影響原數組 | 返回被截取項目的新數組 |
splice() | 數組刪除splice(第幾個開始,要刪除個數),會影響原數組 | 返回被刪除項目的新數組 |
splice具體解析:
(1)slice(begin,end): begin參數是必須的,規定從何處開始選取。如果是負數,那麼規定它從數組尾部開始算起。也就是說,-1表示從最後一個元素開始選取,-2表示從倒數第二個元素開始選取。而end參數是可選的,規定從何處結束選取,該參數一樣可以爲負數。
(2)一個數組對象經過slice(begin,end)操作後,會返回一個新的數組,返回從begin(包含)到end(不包含)之間的所有元素內容。
var arr1 = ["a","b","c"];
console.log(arr1.slice(1,2)); //b
console.log(arr1.slice(1,3)); //b,c
console.log(arr1.slice(0,2)); //a,b
splice具體解析:
(1)splice(第幾個開始,要刪除個數,[item1,item2…itemn]):從數組中添加/刪除項目,然後返回被刪除的項目,括號內有3個參數部分。
(2)第幾個開始是必須的。規定添加/刪除項目的位置,使用負數則從尾部規定位置。
要刪除個數也是必須的。規定要刪除項目的數量,爲0則不刪除。
item1,item2,itm3,…itemn參數是可選的,表示向數組中添加新項目(替換部分)。
var arr1 = ["a","b","c","d","e"];
//從數組索引位置爲1處開始刪除,刪除1個元素,並返回刪除的該元素,輸出“b”
console.log(arr1.splice(1,1));
//經上一步操作後,被操作數組對象的長度會發生變化(減1),輸出4
console.log(arr1.length);
//此時被操作數組中還有4個元素,爲["a","c","d","e"]
//從數組索引位置爲0處開始刪除,刪除2個元素,並返回刪除的元素部分,輸出“a,c”
console.log(array3.splice(0,2));
//此時被操作數組中還有2個元素,爲["d","e"]
//從數組索引位置爲1處開始刪除,刪除2個元素,並返回該刪除的元素部分,輸出“e”
//注意:可以刪除2個元素,但刪除1個元素後已經到達數組的末尾,不再進行刪除。這裏第二個參數在效果上其實等同於指定爲1。
console.log(array3.splice(1,2));
var arr2=["1","2","3","4","5"];
//從數組索引位置爲1處開始刪除,刪除2個元素,返回該刪除的元素部分,輸出“2,3”,
// 並將替換部分(第三個參數部分)代入到被刪除的部分,即數組中["2","3"]的部分變成了["7","8"]
console.log(arr2.splice(1,2,"7","8"));//第三個參數部分爲(item1,item2,...,itemn)
//所以此處數組長度依然是5
console.log(arr2.length);
//輸出內容爲“1,7,8,4,5”
console.log(arr2);
字符串對象
- 基本包裝類型:把簡單數據類型包裝成複雜數據類型,使基本數據類型也有屬性和方法。
- JavaScript中可以實現基本包轉類型的簡單數據類型有String、Numbe、Boolean。
var str = 'andy';
console.log(str,length); //4
//實現簡單數據類型str也有length屬性的原因是基本包裝類型,具體步驟如下:
//生成臨時變量,把簡單類型包轉爲複雜數據類型
var temp = new String('andy');
//賦值給我們聲明的字符變量
str = temp;
//銷燬臨時變量
temp = null;
- 字符串的不可變:指的是裏面的值不可變,雖然看上去可以改變內容,但其實是地址變了,內存中新開闢了一個內存空間。
var str = 'abc';
str = 'hrllo';
//當重新給str賦值當時候,常量'abc'不會被修改,依然在內存中
//重新給字符串賦值,會重新在內存中開闢空間,這個特點就是字符串的不可變
//由於字符串的不可變,在大量拼接字符串的時候就會有效率問題,應儘量減少字符串拼接
-
因爲字符串的不可變,所以字符串的所有方法,都不會修改字符串本身,操作完成後會返回一個新的字符串。
-
根據字符返回位置的方法:
方法名 | 說明 |
---|---|
indexOf(‘要查找的字符’,開始的位置) | 返回指定內容在原字符串中的位置,如果找不到就返回-1 |
lastIndexOf(‘要查找的字符’,開始的位置) | 從後往前找,只找第一個匹配的 |
- 根據位置返回字符:
方法名 | 說明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符(index:字符串的索引號) | str.charAt(0) |
charCodeAt(index) | 獲取指定位置處字符的ASCII碼(index:字符串的索引號) | str.charCodeAt(0) |
str[index] | 獲取指定位置處字符 | HTML5,IE8+支持,和charAt()等效 |
- 替換字符:
//替換字符的語法格式如下:
replace('被替換的字符','替換爲的字符'); //它只會替換第一個字符
var str1 = 'andyandy';
console.log(str1.replace('a','b')) //輸出結果爲:bndyandy
- 字符串轉換爲數組:
//字符串轉換爲數組的語法格式如下:
split('分隔符');
var str1 = 'red,green,blue';
console.log(str1.split(',')); //輸出結果:['red','green','blue']
var str2 = 'red&green&blue';
console.log(str2.split('&')); //輸出結果:['red','green','blue']
- 轉換大小寫:
//轉換爲大寫的語法格式如下:
toUpperCase();
//轉換爲小寫的語法格式如下:
toLowerCase();
var str = 'Hello';
console.log(str.toUpperCase()); //輸出結果:HELLO
console.log(str.toLowerCase()); //輸出結果:hello
- 其他方法:
方法名 | 說明 |
---|---|
concat(str1,str2,str3…) | concat()方法用於連接兩個或多個字符串。拼接字符串等效於+,但+更常用 |
substr(start,length) | 從start位置開始(索引號),length取的個數 |
slice(start,end) | 從start位置開始,截取到end位置,end取不到(start和end都是索引號) |
substring(start,end) | 從start位置開始,截取到end位置,end取不到,基本和slice相同,但是不接受負值 |
微信公衆號也會定期更新,覺得文章寫得還可以的,可以加個關注!點個贊!謝謝!