您好,登錄后才能下訂單哦!
這篇文章主要介紹“JavaScript內置對象的方法有哪些”,在日常操作中,相信很多人在JavaScript內置對象的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript內置對象的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
JavaScript 中的對象分為3種:自定義對象 、內置對象、 瀏覽器對象。
前面兩種對象是JS 基礎 內容,屬于 ECMAScript; 第三個瀏覽器對象屬于我們JS 獨有的。
內置對象就是指 JS 語言自帶的一些對象,這些對象供開發者使用,并提供了一些常用的或是最基本而必要的功能(屬性和方法) 。
內置對象最大的優點就是幫助我們快速開發 。
JavaScript 提供了多個內置對象:Math、 Date 、Array、String等
。
Math 對象不是構造函數,它具有數學常數和函數的屬性和方法。跟數學相關的運算(求絕對值,取整、最大值等)可以使用 Math 中的成員。
Math.PI // 圓周率 Math.floor() // 向下取整 Math.ceil() // 向上取整 Math.round() // 四舍五入版 就近取整 注意 -3.5 結果是 -3 Math.abs() // 絕對值 Math.max()/Math.min() // 求最大和最小值
注意:上面的方法必須帶括號。
案例:封裝自己的數學對象
利用對象封裝自己的數學對象,里面有 PI,最大值和最小值。
<script> // 利用對象封裝自己的數學對象 里面有 PI 最大值和最小值 var myMath = { PI: 3.141592653, max: function () { var max = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }, min: function () { var min = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (arguments[i] < min) { min = arguments[i]; } } return min; } } console.log(myMath.PI); console.log(myMath.max(1, 9, 20, 3, 21, 54, 211, 567, 80)); console.log(myMath.min(1, 0, 90, -10, 82));</script>
random()
方法可以隨機返回一個小數,其取值范圍是 [0,1)
,左閉右開 0 <= x < 1 。
如果想要得到兩個數之間的隨機整數,并且包括這兩個數在內,方法如下:
// 得到一個兩數之間的隨機整數,包括兩個數在內function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;}
Date 對象和 Math 對象不一樣,他是一個構造函數,所以我們需要實例化后才能使用。
Date 實例用來處理日期和時間。
(1)獲取當前時間必須實例化
var now = new Date();console.log(now);
(2)Date() 構造函數的參數
如果括號里面有時間,就返回參數里面的時間。例如,日期格式字符串為‘2019-5-1’,可以寫成new Date(‘2019-5-1’) 或者 new Date(‘2019/5/1’)。
如果 Date() 不寫參數,就返回當前時間
。
如果 Date() 里面寫參數,就返回括號里面輸入的時間
。
我們想要 2019-8-8 8:8:8 格式的日期,要怎么辦?
需要獲取日期指定的部分,所以我們要手動的得到這種格式。
Date 對象是基于1970年1月1日(世界標準時間)起的毫秒數。
我們經常利用總的毫秒數來計算時間,因為它更精確。
<script> // Date 對象是基于1970年1月1日(世界標準時間)起的毫秒數 // 獲得Date 總的毫秒數(時間戳) 不是當前時間的毫秒數 而是距離1970年1月1日過了多少毫秒數 // 1.通過 valueOf() 或者 getTime() var date = new Date(); console.log(date.valueOf()); // 就是我們現在時間 距離1970.1.1 總的毫秒數 console.log(date.getTime()); // 2.簡單的寫法(實際開發中最常用的寫法) var date1 = +new Date(); // +new Date() 返回的就是總的毫秒數 console.log(date1); // 3.H5 新增的 獲得總的毫秒數 console.log(Date.now());</script>
案例分析:
(1)核心算法:輸入的時間減去現在的時間就是剩余的時間,即倒計時 ,但是不能拿著時分秒相減,比如 05 分減去25分,結果會是負數的。
(2)用時間戳來做。用戶輸入時間總的毫秒數減去現在時間的總的毫秒數,得到的就是剩余時間的毫秒數。
(3)把剩余時間總的毫秒數轉換為天、時、分、秒 (時間戳轉換為時分秒)
轉換公式如下:
d = parseInt(總秒數/ 60 / 60 / 24);
// 計算天數
h = parseInt(總秒數/ 60/ 60 % 24)
// 計算小時
m = parseInt(總秒數 / 60 % 60 );
// 計算分數
s = parseInt(總秒數 % 60);
// 計算當前秒數
function coutDown(time) { var nowTime = +new Date(); // 返回的是當前時間總的毫秒數 var inputTime = +new Date(time); // 返回的是用戶輸入時間總的毫秒數 var times = (inputTime - nowTime) / 1000; // times是剩余時間總的秒數(毫秒變 var d = parseInt(times / 60 / 60 / 24); // 計算天數 d = d < 10 ? '0' + d : d; var h = parseInt(times / 60 / 60 % 24); // 計算小時 h = h < 10 ? '0' + h : h; var m = parseInt(times / 60 % 60); // 計算分數 m = m < 10 ? '0' + m : m; var s = parseInt(times % 60); // 計算當前秒數 s = s < 10 ? '0' + s : s; return d + '天' + h + '時' + m + '分' + s + '秒';}console.log(coutDown('2021-3-21 18:00:00'));
創建數組對象的兩種方式
字面量方式
new Array()
// 創建數組的兩種方式 // 1.利用數組字面量 var arr = [1, 2, 3]; console.log(arr[0]); // 1 // 2.利用new Array() var arr1 = new Array(); // 創建一個空的數組 console.log(arr1); // [] var arr2 = new Array(2); // 這個2表示, 數組的長度為2, 里面有2個空的數組元素 console.log(arr2); // [空 × 2] console.log(arr2[0], arr2[1]); // undefined undefined var arr3 = new Array(2, 3); // 等價于[2, 3] 這樣寫表示里面有2個數組元素,是2和3 console.log(arr3); // [2, 3] var arr4 = new Array(['a', 'b', 'c']); console.log(arr4); // [Array(3)] console.log(arr4[0]); // ["a", "b", "c"]
instanceof
運算符,可以判斷一個對象是否屬于某種類型。
Array.isArray()
用于判斷一個對象是否為數組,isArray() 是 HTML5 中提供的方法。
// 檢測是否為數組 // (1)instanceof 運算符,可以判斷一個對象是否屬于某種類型 var arr = []; console.log(arr instanceof Array); // true var obj = {}; console.log(obj instanceof Array); // false // (2)Array.isArray()用于判斷一個對象是否為數組,isArray() 是 HTML5 中提供的方法 console.log(Array.isArray(arr)); // true console.log(Array.isArray(obj)); // false
(1)添加刪除數組元素的方法
(2)數組排序
方法名 | 說明 | 是否修改原數組 |
---|---|---|
reverse() | 顛倒數組中元素的順序,無參數 | 該方法會改變原來的數組,返回新數組 |
sort() | 對數組的元素進行排序 | 該方法會改變原來的數組,返回新數組 |
<script> // 數組排序 // 1.翻轉數組 // reverse() 顛倒數組中元素的順序,無參數 // 該方法會改變原來的數組 返回新數組 var arr = ['pink', 'red', 'purple', 'blue']; arr.reverse(); console.log(arr); // ["blue", "purple", "red", "pink"] // 2.數組排序(冒泡排序) // sort() 對數組的元素進行排序 // 該方法會改變原來的數組 返回新數組 var arr1 = [1, 14, 7, 9, 5, 77, 1]; arr1.sort(function (a, b) { // 固定寫法 return a - b; // 升序的順序排列 // return b - a; // 降序 }); console.log(arr1); // [1, 1, 5, 7, 9, 14, 77]</script>
(3)數組索引方法
方法名 | 說明 | 返回值 |
---|---|---|
indexOf() | 數組中查找給定元素的第一個索引 | 如果存在返回索引號,如果不存在,則返回-1 |
lastIndexOf() | 在數組中的最后一個索引 | 如果存在返回索引號,如果不存在,則返回-1 |
// 返回數組元素索引方法 // indexOf(數組元素) 作用就是返回該數組元素的索引號 從前面開始查找 // 數組中查找給定元素的第一個索引,如果存在返回索引號,如果不存在,則返回-1 var arr = ['red', 'green', 'blue', 'pink', 'blue']; console.log(arr.indexOf('blue')); // 2 // lastIndexOf(數組元素) 從后面開始查找,如果存在返回索引號,如果不存在,則返回-1 console.log(arr.lastIndexOf('blue')); // 4
(4)數組轉換為字符串
方法名 | 說明 | 返回值 |
---|---|---|
toString() | 把數組轉換成字符串,逗號分隔每一項 | 返回一個字符串 |
join(‘分隔符’) | 方法用于把數組中的所有元素轉換為一個字符串,不寫分隔符,默認逗號分隔 | 返回一個字符串 |
// 數組轉換為字符串 // 1.toString() 將數組轉換成字符串,逗號分隔每一項,返回一個字符串 var arr = [1, 2, 3]; console.log(arr.toString()); // "1,2,3" // 2.join(分隔符) var arr1 = ['green', 'blue', 'pink']; console.log(arr1.join()); // "green,blue,pink" console.log(arr1.join('-')); // "green-blue-pink" console.log(arr1.join('&')); // "green&blue&pink"
(5)其他一些方法
// 1.concat() 連接兩個或多個數組,不影響原數組 最后返回一個新數組 var arr1 = [1, 2, 3]; var arr2 = ['red', 'pink', 'blue']; console.log(arr1.concat(arr2)); // [1, 2, 3, "red", "pink", "blue"] // 2.slice(begin, end) 數組截取 返回被截取項目的新數組 var arr3 = [1, 2, 3, 4, 5, 'red', 'yellow', 'blue']; console.log(arr2.slice(0, 1)); // ["red"] console.log(arr3.slice(2, 7)); // [3, 4, 5, "red", "yellow"] // 3.splice(第幾個開始,要刪除個數) 數組刪除 返回被刪除項目的新數組,注意,這個會影響原數組 console.log(arr3.splice(2, 5)); // [3, 4, 5, "red", "yellow"]
有一個數組[‘c’, ‘a’, ‘z’, ‘a’, ‘x’, ‘a’, ‘x’, ‘c’, ‘b’]
,要求去除數組中重復的元素。
目標:把舊數組里面不重復的元素選取出來放到新數組中,重復的元素只保留一個,放到新數組中去重。
核心算法:我們遍歷舊數組,然后拿著舊數組元素去查詢新數組,如果該元素在新數組里面沒有出現過,我們就添加,否則不添加。
我們怎么知道該元素沒有存在? 利用 新數組.indexOf(數組元素)
如果返回-1,就說明新數組里面沒有改元素
// 封裝一個去重的函數 unique 獨一無二的 function unique(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } return newArr; } var arr1 = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']; var demo = unique(arr1); console.log(demo); // ["c", "a", "z", "x", "b"]
為了方便操作基本數據類型,JavaScript 還提供了三個特殊的引用類型:String、Number和 Boolean。
基本包裝類型就是把簡單數據類型包裝成為復雜數據類型,這樣基本數據類型就有了屬性和方法。
下面代碼有什么問題?
var str = 'andy';console.log(str.length); // 4
按道理基本數據類型是沒有屬性和方法的,而對象才有屬性和方法,但上面代碼卻可以執行,這是因為 js 會把基本數據類型包裝為復雜數據類型,其執行過程如下 :
// 1. 生成臨時變量,把簡單類型包裝為復雜數據類型var temp = new String('andy'); // 2. 賦值給我們聲明的字符變量str = temp; // 3. 銷毀臨時變量temp = null;
字符串的不可變指的是里面的值不可變,雖然看上去可以改變內容,但其實是地址變了,內存中新開辟了一個內存空間。
字符串的不可變的特點:重新給字符串賦值,會重新在內存中開辟空間。
var str = 'abc';str = 'hello';// 當重新給 str 賦值的時候,常量'abc'不會被修改,依然在內存中// 重新給字符串賦值,會重新在內存中開辟空間,這個特點就是字符串的不可變// 由于字符串的不可變,在大量拼接字符串的時候會有效率問題var str = '';for (var i = 0; i < 100000; i++) { str += i;}console.log(str); // 這個結果需要花費大量時間來顯示,因為需要不斷的開辟新的空間
字符串所有的方法,都不會修改字符串本身(字符串是不可變的),操作完成會返回一個新的字符串。
(1)根據字符返回位置
方法名 | 說明 |
---|---|
indexOf(‘要查找的字符’,開始的位置) | 返回指定內容在原字符串中的位置,如果找不到就返回 -1 ,開始的位置是 index 索引號 |
lastIndexOf() | 從后往前找,只找第一個匹配的 |
// 根據字符返回位置 // 1.indexOf('要查找的字符', '開始的位置') // 返回指定內容在元字符串中的位置,如果找不到就返回-1,開始的位置index的索引號 var str = '改革春風吹滿地,春天來了'; console.log(str.indexOf('春')); // 2 console.log(str.indexOf('春', 3)); // 從索引號是 3 的位置開始往后查找 // 8 // 2.lastIndexOf() 從后往前找,只找第一個匹配的 console.log(str.lastIndexOf('春')); // 8 console.log(str.lastIndexOf('春', 7)); // 2
案例:返回字符位置
查找字符串"oabcoefoxyozzopp"
中所有 o 出現的位置以及次數。
思路:
核心算法:先查找第一個o出現的位置。
然后,只要indexOf 返回的結果不是 - 1 就繼續往后查找。
因為 indexOf 只能查找到第一個,所以后面的查找,利用第二個參數,當前索引加1,從而繼續查找。
代碼:
var str = 'oabcoefoxyozzopp';var index = str.indexOf('o');var num = 0;while (index !== -1) { // console.log(index); num++; index = str.indexOf('o', index + 1);}console.log('o出現的次數為:' + num); // 5
(2)根據位置返回字符
方法名 | 說明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符(index 字符串的索引號) | str.charAt(0) |
charCodeAt(index) | 獲取指定位置處字符的ASCII碼(inex 索引號) | str.charCodeAt(0) |
str[index] | 獲取指定位置處字符 | HTML5,IE8+支持,和 charAt()等效 |
// 根據位置返回字符(重點) // 1.charAt(index) 根據索引號返回指定位置的字符 var str = 'andy'; console.log(str.charAt(3)); // "y" // 遍歷所有的字符 for (var i = 0; i < str.length; i++) { console.log(str.charAt(i)); } // 2.charCodeAt(index) 根據索引好返回相應位置的字符ASCII值, 目的:判斷用戶按下了哪個鍵 console.log(str.charCodeAt(0)); // 97 // 3.str[index] 根據索引號返回指定位置的字符 H5 新增的 console.log(str[0]); // "a"
案例:返回字符位置
判斷一個字符串 'abcoefoxyozzopp'
中出現次數最多的字符,并統計其次數。
思路:
① 核心算法:利用 charAt()遍歷這個字符串。
② 把每個字符都存儲給對象, 如果對象沒有該屬性,就為1,如果存在了就 +1。
③ 遍歷對象,得到最大值和該字符。
代碼:
// 案例:返回字符位置// 有一個對象 來判斷是否有該屬性 對象['屬性名']var o1 = { age: 18}if (o1['age']) { console.log('里面有該屬性');} else { console.log('里面沒有該屬性');}// 判斷一個字符串 'abcoefoxyozzopp' 中出現次數最多的字符,并統計其次數。var str = 'abcoefoxyozzopp';var o = {}; // 聲明一個對象for (var i = 0; i < str.length; i++) { var chars = str.charAt(i); // chars 是字符串的每個字符 if (o[chars]) { // o[chars] 得到的是屬性值 o[chars]++; } else { o[chars] = 1; }}console.log(o);// 2.遍歷對象var max = 0;var ch = '';for (var k in o) { // k 得到的是 屬性名 // o[k] 得到的是 屬性值 if (o[k] > max) { max = o[k]; ch = k; }}console.log('出現次數最多字符的為:' + ch, '次數為:' + max);
(3)字符串操作方法
// 字符串操作方法(重點) // 1.concat('字符串1', '字符串2',....) 連接兩個或多個字符串,等效于+ var str = 'andy'; console.log(str.concat('red')); // "andyred" // 2.substr('截取的起始位置','截取幾個字符') 截取字符串 var str1 = '改革春風吹滿地'; console.log(str1.substr(2, 2)); // "春風" 第一個2 是索引號 第二個2 是取的字符串個數
(4)replace() 方法和 split() 方法
replace()
方法用于在字符串中用一些字符替換另一些字符。
其使用格式如下:
replace(被替換的字符串, 要替換為的字符串);
// 3.replace(被替換的字符串, 要替換為的字符串); 替換字符 它只會替換第一個字符 var str3 = 'andyandy'; console.log(str3.replace('a', 'b')); // "bndyandy" // 有一個字符串 'abcoefoxyozzopp' 要求把里面所有的 'o' 替換為* var str4 = 'abcoefoxyozzopp'; while (str4.indexOf('o') !== -1) { str4 = str4.replace('o', '*'); } console.log(str4); // "abc*ef*xy*zz*pp"
split()
方法用于切分字符串,它可以將字符串切分為數組。在切分完畢之后,返回的是一個新數組。
// 4.split()方法用于切分字符串,它可以將字符串切分為數組。在切分完畢之后,返回的是一個新數組。 // split('分隔符') 把字符轉換為數組 前面我們學過 join 把數組轉換為字符串 var str5 = 'red, pink, blue'; console.log(str5.split(',')); // ["red", " pink", " blue"] var str6 = 'red&pink&blue'; console.log(str6.split('&')); // ["red", " pink", " blue"]
其他一些方法:
toUpperCase()
// 轉換大寫
toLowerCase()
// 轉換小寫
到此,關于“JavaScript內置對象的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。