欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)

          本篇文章給大家?guī)砹薐avaScript中內(nèi)置對象的相關(guān)知識(shí),內(nèi)置對象最大的優(yōu)點(diǎn)就是能夠幫助我們快速開發(fā),希望對大家有幫助。

          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)

          1、內(nèi)置對象

          • JavaScript 中的對象分為3種:自定義對象 、內(nèi)置對象、 瀏覽器對象
          • 前面兩種對象是JS 基礎(chǔ) 內(nèi)容,屬于 ECMAScript; 第三個(gè)瀏覽器對象屬于我們JS 獨(dú)有的。
          • 內(nèi)置對象就是指 JS 語言自帶的一些對象,這些對象供開發(fā)者使用,并提供了一些常用的或是最基本而必要的功能(屬性和方法) 。
          • 內(nèi)置對象最大的優(yōu)點(diǎn)就是幫助我們快速開發(fā) 。
          • JavaScript 提供了多個(gè)內(nèi)置對象:Math、 Date 、Array、String等

          2、內(nèi)置對象:Math 對象

          2.1 Math 概述

          Math 對象不是構(gòu)造函數(shù),它具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法。跟數(shù)學(xué)相關(guān)的運(yùn)算(求絕對值,取整、最大值等)可以使用 Math 中的成員。

          Math.PI // 圓周率 Math.floor() // 向下取整 Math.ceil() // 向上取整 Math.round() // 四舍五入版 就近取整 注意 -3.5 結(jié)果是 -3 Math.abs() // 絕對值 Math.max()/Math.min() // 求最大和最小值

          注意:上面的方法必須帶括號。

          案例:封裝自己的數(shù)學(xué)對象

          利用對象封裝自己的數(shù)學(xué)對象,里面有 PI,最大值和最小值。

          <script>     // 利用對象封裝自己的數(shù)學(xué)對象 里面有 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>

          2.2 隨機(jī)數(shù)方法 random()

          random() 方法可以隨機(jī)返回一個(gè)小數(shù),其取值范圍是 [0,1),左閉右開 0 <= x < 1 。

          如果想要得到兩個(gè)數(shù)之間的隨機(jī)整數(shù),并且包括這兩個(gè)數(shù)在內(nèi),方法如下:

          // 得到一個(gè)兩數(shù)之間的隨機(jī)整數(shù),包括兩個(gè)數(shù)在內(nèi)function getRandom(min, max) {     return Math.floor(Math.random() * (max - min + 1)) + min;}

          3、內(nèi)置對象:日期對象

          3.1 Date 概述

          • Date 對象和 Math 對象不一樣,他是一個(gè)構(gòu)造函數(shù),所以我們需要實(shí)例化后才能使用。
          • Date 實(shí)例用來處理日期和時(shí)間。

          3.2 Date() 方法的使用

          (1)獲取當(dāng)前時(shí)間必須實(shí)例化

          var now = new Date();console.log(now);

          (2)Date() 構(gòu)造函數(shù)的參數(shù)

          如果括號里面有時(shí)間,就返回參數(shù)里面的時(shí)間。例如,日期格式字符串為‘2019-5-1’,可以寫成new Date(‘2019-5-1’) 或者 new Date(‘2019/5/1’)。

          • 如果 Date() 不寫參數(shù),就返回當(dāng)前時(shí)間 。
          • 如果 Date() 里面寫參數(shù),就返回括號里面輸入的時(shí)間。

          3.3 日期格式化

          我們想要 2019-8-8 8:8:8 格式的日期,要怎么辦?

          需要獲取日期指定的部分,所以我們要手動(dòng)的得到這種格式。

          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)

          3.4 獲取日期的總的毫秒形式

          Date 對象是基于1970年1月1日(世界標(biāo)準(zhǔn)時(shí)間)起的毫秒數(shù)。

          我們經(jīng)常利用總的毫秒數(shù)來計(jì)算時(shí)間,因?yàn)樗_。

          <script>     // Date 對象是基于1970年1月1日(世界標(biāo)準(zhǔn)時(shí)間)起的毫秒數(shù)     // 獲得Date 總的毫秒數(shù)(時(shí)間戳)  不是當(dāng)前時(shí)間的毫秒數(shù) 而是距離1970年1月1日過了多少毫秒數(shù)     // 1.通過 valueOf() 或者 getTime()     var date = new Date();     console.log(date.valueOf());   // 就是我們現(xiàn)在時(shí)間 距離1970.1.1 總的毫秒數(shù)     console.log(date.getTime());     // 2.簡單的寫法(實(shí)際開發(fā)中最常用的寫法)     var date1 = +new Date();   // +new Date()  返回的就是總的毫秒數(shù)     console.log(date1);     // 3.H5 新增的 獲得總的毫秒數(shù)     console.log(Date.now());</script>

          3.5 案例:倒計(jì)時(shí)效果

          案例分析

          (1)核心算法:輸入的時(shí)間減去現(xiàn)在的時(shí)間就是剩余的時(shí)間,即倒計(jì)時(shí) ,但是不能拿著時(shí)分秒相減,比如 05 分減去25分,結(jié)果會(huì)是負(fù)數(shù)的。

          (2)用時(shí)間戳來做。用戶輸入時(shí)間總的毫秒數(shù)減去現(xiàn)在時(shí)間的總的毫秒數(shù),得到的就是剩余時(shí)間的毫秒數(shù)。

          (3)把剩余時(shí)間總的毫秒數(shù)轉(zhuǎn)換為天、時(shí)、分、秒 (時(shí)間戳轉(zhuǎn)換為時(shí)分秒)
          轉(zhuǎn)換公式如下:

          • d = parseInt(總秒數(shù)/ 60 / 60 / 24); // 計(jì)算天數(shù)
          • h = parseInt(總秒數(shù)/ 60/ 60 % 24) // 計(jì)算小時(shí)
          • m = parseInt(總秒數(shù) / 60 % 60 ); // 計(jì)算分?jǐn)?shù)
          • s = parseInt(總秒數(shù) % 60); // 計(jì)算當(dāng)前秒數(shù)
          function coutDown(time) {     var nowTime = +new Date();   // 返回的是當(dāng)前時(shí)間總的毫秒數(shù)     var inputTime = +new Date(time);  // 返回的是用戶輸入時(shí)間總的毫秒數(shù)     var times = (inputTime - nowTime) / 1000;  // times是剩余時(shí)間總的秒數(shù)(毫秒變     var d = parseInt(times / 60 / 60 / 24);  // 計(jì)算天數(shù)     d = d < 10 ? '0' + d : d;     var h = parseInt(times / 60 / 60 % 24);  // 計(jì)算小時(shí)     h = h < 10 ? '0' + h : h;     var m = parseInt(times / 60 % 60);    // 計(jì)算分?jǐn)?shù)     m = m < 10 ? '0' + m : m;     var s = parseInt(times % 60);         // 計(jì)算當(dāng)前秒數(shù)      s = s < 10 ? '0' + s : s;     return d + '天' + h + '時(shí)' + m + '分' + s + '秒';}console.log(coutDown('2021-3-21 18:00:00'));

          4、內(nèi)置對象: 數(shù)組對象

          4.1 數(shù)組對象的創(chuàng)建

          創(chuàng)建數(shù)組對象的兩種方式

          • 字面量方式
          • new Array()
          // 創(chuàng)建數(shù)組的兩種方式 // 1.利用數(shù)組字面量 var arr = [1, 2, 3]; console.log(arr[0]);  // 1  // 2.利用new Array() var arr1 = new Array();  // 創(chuàng)建一個(gè)空的數(shù)組 console.log(arr1);  // []  var arr2 = new Array(2);  // 這個(gè)2表示, 數(shù)組的長度為2, 里面有2個(gè)空的數(shù)組元素 console.log(arr2);   // [空 × 2] console.log(arr2[0], arr2[1]);  // undefined undefined  var arr3 = new Array(2, 3);  // 等價(jià)于[2, 3]  這樣寫表示里面有2個(gè)數(shù)組元素,是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"]

          4.2 檢測是否為數(shù)組

          • instanceof 運(yùn)算符,可以判斷一個(gè)對象是否屬于某種類型。
          • Array.isArray() 用于判斷一個(gè)對象是否為數(shù)組,isArray() 是 HTML5 中提供的方法。
          // 檢測是否為數(shù)組 // (1)instanceof 運(yùn)算符,可以判斷一個(gè)對象是否屬于某種類型 var arr = []; console.log(arr instanceof Array);   // true var obj = {}; console.log(obj instanceof Array);   // false  //  (2)Array.isArray()用于判斷一個(gè)對象是否為數(shù)組,isArray() 是 HTML5 中提供的方法 console.log(Array.isArray(arr));   // true console.log(Array.isArray(obj));   // false

          4.3 數(shù)組常用的方法

          (1)添加刪除數(shù)組元素的方法
          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)
          (2)數(shù)組排序

          方法名 說明 是否修改原數(shù)組
          reverse() 顛倒數(shù)組中元素的順序,無參數(shù) 該方法會(huì)改變原來的數(shù)組,返回新數(shù)組
          sort() 對數(shù)組的元素進(jìn)行排序 該方法會(huì)改變原來的數(shù)組,返回新數(shù)組
          <script>     // 數(shù)組排序     // 1.翻轉(zhuǎn)數(shù)組     // reverse() 顛倒數(shù)組中元素的順序,無參數(shù)     // 該方法會(huì)改變原來的數(shù)組  返回新數(shù)組     var arr = ['pink', 'red', 'purple', 'blue'];     arr.reverse();     console.log(arr);  // ["blue", "purple", "red", "pink"]          // 2.數(shù)組排序(冒泡排序)     // sort()  對數(shù)組的元素進(jìn)行排序     // 該方法會(huì)改變原來的數(shù)組  返回新數(shù)組     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)數(shù)組索引方法

          方法名 說明 返回值
          indexOf() 數(shù)組中查找給定元素的第一個(gè)索引 如果存在返回索引號,如果不存在,則返回-1
          lastIndexOf() 在數(shù)組中的最后一個(gè)索引 如果存在返回索引號,如果不存在,則返回-1
          // 返回?cái)?shù)組元素索引方法   // indexOf(數(shù)組元素)  作用就是返回該數(shù)組元素的索引號  從前面開始查找 // 數(shù)組中查找給定元素的第一個(gè)索引,如果存在返回索引號,如果不存在,則返回-1 var arr = ['red', 'green', 'blue', 'pink', 'blue']; console.log(arr.indexOf('blue'));  // 2  // lastIndexOf(數(shù)組元素) 從后面開始查找,如果存在返回索引號,如果不存在,則返回-1 console.log(arr.lastIndexOf('blue'));  // 4

          (4)數(shù)組轉(zhuǎn)換為字符串

          方法名 說明 返回值
          toString() 把數(shù)組轉(zhuǎn)換成字符串,逗號分隔每一項(xiàng) 返回一個(gè)字符串
          join(‘分隔符’) 方法用于把數(shù)組中的所有元素轉(zhuǎn)換為一個(gè)字符串,不寫分隔符,默認(rèn)逗號分隔 返回一個(gè)字符串
          // 數(shù)組轉(zhuǎn)換為字符串 // 1.toString() 將數(shù)組轉(zhuǎn)換成字符串,逗號分隔每一項(xiàng),返回一個(gè)字符串 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)其他一些方法
          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)

           // 1.concat()  連接兩個(gè)或多個(gè)數(shù)組,不影響原數(shù)組   最后返回一個(gè)新數(shù)組  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)  數(shù)組截取  返回被截取項(xiàng)目的新數(shù)組  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(第幾個(gè)開始,要?jiǎng)h除個(gè)數(shù))  數(shù)組刪除  返回被刪除項(xiàng)目的新數(shù)組,注意,這個(gè)會(huì)影響原數(shù)組  console.log(arr3.splice(2, 5));  // [3, 4, 5, "red", "yellow"]

          4.4 案例:數(shù)組去重

          有一個(gè)數(shù)組[‘c’, ‘a(chǎn)’, ‘z’, ‘a(chǎn)’, ‘x’, ‘a(chǎn)’, ‘x’, ‘c’, ‘b’],要求去除數(shù)組中重復(fù)的元素。

          • 目標(biāo):把舊數(shù)組里面不重復(fù)的元素選取出來放到新數(shù)組中,重復(fù)的元素只保留一個(gè),放到新數(shù)組中去重。
          • 核心算法:我們遍歷舊數(shù)組,然后拿著舊數(shù)組元素去查詢新數(shù)組,如果該元素在新數(shù)組里面沒有出現(xiàn)過,我們就添加,否則不添加。
          • 我們怎么知道該元素沒有存在? 利用 新數(shù)組.indexOf(數(shù)組元素) 如果返回-1,就說明新數(shù)組里面沒有改元素
           // 封裝一個(gè)去重的函數(shù) unique 獨(dú)一無二的  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"]

          5、內(nèi)置對象:字符串對象

          5.1 基本包裝類型

          為了方便操作基本數(shù)據(jù)類型,JavaScript 還提供了三個(gè)特殊的引用類型:String、Number和 Boolean。

          基本包裝類型就是把簡單數(shù)據(jù)類型包裝成為復(fù)雜數(shù)據(jù)類型,這樣基本數(shù)據(jù)類型就有了屬性和方法。

          下面代碼有什么問題?

          var str = 'andy';console.log(str.length);  // 4

          按道理基本數(shù)據(jù)類型是沒有屬性和方法的,而對象才有屬性和方法,但上面代碼卻可以執(zhí)行,這是因?yàn)?js 會(huì)把基本數(shù)據(jù)類型包裝為復(fù)雜數(shù)據(jù)類型,其執(zhí)行過程如下 :

          // 1. 生成臨時(shí)變量,把簡單類型包裝為復(fù)雜數(shù)據(jù)類型var temp = new String('andy'); // 2. 賦值給我們聲明的字符變量str = temp; // 3. 銷毀臨時(shí)變量temp = null;

          5.2 字符串的不可變

          字符串的不可變指的是里面的值不可變,雖然看上去可以改變內(nèi)容,但其實(shí)是地址變了,內(nèi)存中新開辟了一個(gè)內(nèi)存空間。

          字符串的不可變的特點(diǎn):重新給字符串賦值,會(huì)重新在內(nèi)存中開辟空間

          var str = 'abc';str = 'hello';// 當(dāng)重新給 str 賦值的時(shí)候,常量'abc'不會(huì)被修改,依然在內(nèi)存中// 重新給字符串賦值,會(huì)重新在內(nèi)存中開辟空間,這個(gè)特點(diǎn)就是字符串的不可變// 由于字符串的不可變,在大量拼接字符串的時(shí)候會(huì)有效率問題var str = '';for (var i = 0; i < 100000; i++) { 	str += i;}console.log(str); // 這個(gè)結(jié)果需要花費(fèi)大量時(shí)間來顯示,因?yàn)樾枰粩嗟拈_辟新的空間

          5.3 字符串對象常用的方法

          字符串所有的方法,都不會(huì)修改字符串本身(字符串是不可變的),操作完成會(huì)返回一個(gè)新的字符串。

          (1)根據(jù)字符返回位置

          方法名 說明
          indexOf(‘要查找的字符’,開始的位置) 返回指定內(nèi)容在原字符串中的位置,如果找不到就返回 -1 ,開始的位置是 index 索引號
          lastIndexOf() 從后往前找,只找第一個(gè)匹配的
           // 根據(jù)字符返回位置  // 1.indexOf('要查找的字符', '開始的位置')  // 返回指定內(nèi)容在元字符串中的位置,如果找不到就返回-1,開始的位置index的索引號  var str = '改革春風(fēng)吹滿地,春天來了';  console.log(str.indexOf('春'));   // 2  console.log(str.indexOf('春', 3));  // 從索引號是 3 的位置開始往后查找   // 8    // 2.lastIndexOf()  從后往前找,只找第一個(gè)匹配的  console.log(str.lastIndexOf('春'));  // 8  console.log(str.lastIndexOf('春', 7));  // 2

          案例:返回字符位置

          查找字符串"oabcoefoxyozzopp"中所有 o 出現(xiàn)的位置以及次數(shù)。

          思路:

          1. 核心算法:先查找第一個(gè)o出現(xiàn)的位置。
          2. 然后,只要indexOf 返回的結(jié)果不是 – 1 就繼續(xù)往后查找。
          3. 因?yàn)?indexOf 只能查找到第一個(gè),所以后面的查找,利用第二個(gè)參數(shù),當(dāng)前索引加1,從而繼續(xù)查找。

          代碼:

          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出現(xiàn)的次數(shù)為:' + num);  // 5

          (2)根據(jù)位置返回字符

          方法名 說明 使用
          charAt(index) 返回指定位置的字符(index 字符串的索引號) str.charAt(0)
          charCodeAt(index) 獲取指定位置處字符的ASCII碼(inex 索引號) str.charCodeAt(0)
          str[index] 獲取指定位置處字符 HTML5,IE8+支持,和 charAt()等效
           // 根據(jù)位置返回字符(重點(diǎn))  // 1.charAt(index) 根據(jù)索引號返回指定位置的字符  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) 根據(jù)索引好返回相應(yīng)位置的字符ASCII值, 目的:判斷用戶按下了哪個(gè)鍵  console.log(str.charCodeAt(0));  // 97    // 3.str[index] 根據(jù)索引號返回指定位置的字符 H5 新增的  console.log(str[0]);  // "a"

          案例:返回字符位置

          判斷一個(gè)字符串 'abcoefoxyozzopp' 中出現(xiàn)次數(shù)最多的字符,并統(tǒng)計(jì)其次數(shù)。

          思路:
          ① 核心算法:利用 charAt()遍歷這個(gè)字符串。

          ② 把每個(gè)字符都存儲(chǔ)給對象, 如果對象沒有該屬性,就為1,如果存在了就 +1。

          ③ 遍歷對象,得到最大值和該字符。

          代碼:

          // 案例:返回字符位置// 有一個(gè)對象 來判斷是否有該屬性 對象['屬性名']var o1 = {     age: 18}if (o1['age']) {     console.log('里面有該屬性');} else {     console.log('里面沒有該屬性');}// 判斷一個(gè)字符串 'abcoefoxyozzopp' 中出現(xiàn)次數(shù)最多的字符,并統(tǒng)計(jì)其次數(shù)。var str = 'abcoefoxyozzopp';var o = {};  // 聲明一個(gè)對象for (var i = 0; i < str.length; i++) {     var chars = str.charAt(i);   // chars 是字符串的每個(gè)字符     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('出現(xiàn)次數(shù)最多字符的為:' + ch, '次數(shù)為:' + max);

          (3)字符串操作方法
          深入淺析JavaScript內(nèi)置對象(總結(jié)分享)

          // 字符串操作方法(重點(diǎn)) // 1.concat('字符串1', '字符串2',....)  連接兩個(gè)或多個(gè)字符串,等效于+ var str = 'andy'; console.log(str.concat('red'));  // "andyred" // 2.substr('截取的起始位置','截取幾個(gè)字符')  截取字符串 var str1 = '改革春風(fēng)吹滿地'; console.log(str1.substr(2, 2));  // "春風(fēng)"  第一個(gè)2 是索引號  第二個(gè)2 是取的字符串個(gè)數(shù)

          (4)replace() 方法和 split() 方法

          replace() 方法用于在字符串中用一些字符替換另一些字符。

          其使用格式如下:

          replace(被替換的字符串, 要替換為的字符串);
          // 3.replace(被替換的字符串, 要替換為的字符串);  替換字符  它只會(huì)替換第一個(gè)字符 var str3 = 'andyandy'; console.log(str3.replace('a', 'b'));  // "bndyandy" // 有一個(gè)字符串 'abcoefoxyozzopp' 要求把里面所有的 'o' 替換為* var str4 = 'abcoefoxyozzopp'; while (str4.indexOf('o') !== -1) {     str4 = str4.replace('o', '*'); } console.log(str4);   // "abc*ef*xy*zz*pp"

          split() 方法用于切分字符串,它可以將字符串切分為數(shù)組。在切分完畢之后,返回的是一個(gè)新數(shù)組。

           // 4.split()方法用于切分字符串,它可以將字符串切分為數(shù)組。在切分完畢之后,返回的是一個(gè)新數(shù)組。  // split('分隔符')  把字符轉(zhuǎn)換為數(shù)組  前面我們學(xué)過 join 把數(shù)組轉(zhuǎn)換為字符串  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() // 轉(zhuǎn)換大寫
          • toLowerCase() // 轉(zhuǎn)換小寫

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號