JavaScript入門之JS中的內置對象

来源:http://www.cnblogs.com/wuhao752718372/archive/2017/09/03/7470074.html
-Advertisement-
Play Games

一、數組 1、數組的基本概念 數組是在記憶體空間中連續存儲的一組有序數據的集合。元素在數組中的順序,稱為下標。可以使用下標訪問數組的每個元素。 2、如何聲明一個數組 ①使用字面量聲明:var arr = [];在JS中,同一數組可以存儲各種數據類型; eg: var arr = [1,"wuhao", ...


一、數組

1、數組的基本概念

數組是在記憶體空間中連續存儲的一組有序數據的集合。元素在數組中的順序,稱為下標。可以使用下標訪問數組的每個元素。 

2、如何聲明一個數組

①使用字面量聲明:var arr = [];在JS中,同一數組可以存儲各種數據類型;  eg: var arr = [1,"wuhao",true,{},null,func] 
②使用new關鍵字聲明:var arr = new Array(參數);
  >>>參數可以是:
    a.參數省略,表示創建一個空數組
    b.參數為一個整數,表示聲明一個length為指定長度的數組。但是這個length可以隨時可變可追加
    c.參數為逗號分隔的多個數值,表示數組的多個值。new array(1,2,3) == [1,2,3]   

3、數組中元素的讀寫/增刪

①讀寫:通過下標訪問元素。下標從0開始 arr[1] = "haha";
②增刪:
  a.使用delete關鍵字,刪除數組的某一個值。刪除後,數組的長度不變,對應的位置變為Undefined。 eg:delete arr[1];
  b.arr.pop():刪除數組的最後一個值。相當於arr.length -= 1;
  c.arr.shift():刪除數組的第一個值。
  d.arr.unshift(值):在數組的第0個位置新增一個值;
  e.arr.push(值):在數組的最後一個位置新增一個值;
  f. 直接訪問數組沒達到的下標,可以動態追加。
    eg:arr[8]="嘿嘿"; arr[100]=1; 中間如果有空餘下標,將存入Undefined。

4、數組中的其他方法(非常非常常用!!!!面試題特愛考!!!尤其是sort) 

join()將數組用指定分隔符鏈接為字元串。當參數為空時,預設用逗號分隔。

運行結果為:

 

concat():[原數組不會被改變] 將數組,與兩個或多個數組的值鏈接為一個新數組。concat連接時,如果有二維數組,則至多能拆一層[]
  eg: [1,2].concat([3,4],[5,6]); -->[1,2,3,4,5,6]
        [1,2].concat([3,4,[5,6]]); -->[1,2,3,4,[5,6]]
push()在數組最後增加一個  unshift()數組開頭增加一個 -->返回新數組的長度   pop():在數組最後刪除一個  shift()數組開頭刪除一個-->返回被刪除的值;
 [上述方法,均會改變原數組]

運行結果為:

 

reverse():[原數組被改變]將數組翻轉,倒敘輸出。
  eg: var arr = [1,2,3,4,5,6,7,8];
        arr.reverse();
                console.log(arr);

運行結果為:

slice(begin,end):[原數組不會被改變]截取數組中的某一部分,並返回截取的新數組。
  >>>傳入一個參數,表示開始區間,預設將截到數組最後;
  >>>傳入兩個參數,表示開始和結束的下標,左閉右開區間(包含begin,不包含end);
  >>>兩個參數可以為負數,表示從右邊開始數,最後一個值為-1;

運行結果為:

sort():[原數組被改變]將數組進行升序排列;
  >>>預設情況下,會按照每個元素首字母的ASCII值進行排序;
    eg:[1,5,13,12,7,6,4,8].sort() -->[1,12,13,4,5,6,7,8];
  >>>可以傳入一個比較函數,手動指定排序的函數演算法;
函數將預設接收兩個值a,b,如果函數返回值>0,則證明a>b,如果函數返回值<0,則證明a<b
    arr.sort(function(a,b){
      return a-b; //升序排列;
      return b-a; //降序排列;
    });

indexOf(value,index):返回數組中第一個value值所在的下標,如果沒有找到則返回-1;lastIndexOf(value,index):返回數組中最後一個value值所在的下標,如果沒有找到則返回-1;
  >>>如果沒有指定index,則表示全數組查找value;
  >>>如果指定了index,則表示從index開始,向後查找value;

運行結果為:

forEach():專門用於迴圈遍曆數組。接收一個回調函數,回調函數接收兩個參數,第一個參數為數組的每一項的值,第二個參數為下標(IE8之前,不支持此函數!!!!!)
  var arr = [1,5,6,3,4,2,7,6,4,8];
  arr.forEach(function(item,index){
    console.log(item);
  })

運行結果為:

map():數組映射,使用方式與forEach()相同。不同的是,map可以有return返回值,表示將原數組的每個值進行操作後,返回給一個新數組。(IE8之前,不支持此函數!!!!!)
  var arr1 = arr.map(function(item,index){
    console.log(item);
    return item+2;
  });
  console.log(arr1);

5、二維數組與稀疏數組(瞭解)

①二維數組:數組中的值,依然是一個數組形式。
  eg:arr=[[1,2,3],[4,5,6]]; //相當於兩行三列,讀取二維數組:arr[行號][列號];
②稀疏數組:數組中的索引是不連續的。(length要比數組中實際的元素個數大)

運行結果為:

6、基本數據類型和引用數據類型

①基本數據類型:賦值時,是將原變數中的值,賦值給另一個變數,複製完成後,兩個變數相互獨立,修改其中一個的值,另一個不會變化。

②引用數據類型:賦值時,是將原變數在記憶體中的地址,賦值給另一個變數。賦值完成後,兩個變數中存儲的是同一個記憶體地址,訪問的是同一份數據,其中一個改變另一個也會發生變化。  
③數值型、字元串、布爾型等變數屬於基本數據類型;數組,對象屬於引用數據類型;

運行結果為:

 

二、內置對象

Boolean 類(布爾類)

有兩種聲明方式:可以使用字面量方式聲明一個單純的變數; 用typeof檢測為Boolean類型,也可以使用new Boolean()聲明一個Boolean類型的對象; 用typeof檢測為Object類型。

運行結果為:

Number類

Number.MAX_VALUE:返回Number類可表示的最大值
Number.MIN_VALUE:返回Number類可表示的最小值

.toString():將數值類型轉換為字元串類型;

運行結果為:

.toLocaleString():將數值按照本地格式順序轉換為字元串,一般從右開始,三個一組加逗號分隔;

運行結果為:  

.toFixed(n):將數字保留n位小數,並轉為字元串格式;

運行結果為:

.toPrecision(n):將數字格式化為指定長度;n表示不含小數點的位數長度。如果n<原數字長度,則用科學計數法表示。如果n>原數字長度,則小數點後補0;

運行結果為:

.valueOf():返回Number對象的基本數字值;

運行結果為:


String類

1、屬性: str.length 返回字元串的長度,也就是字元數。字元串支持類似數組的下標訪問方式:str.[0];
2、方法(很重要)
.toLowerCase():將字元串所有字元轉成小寫;
.toUpperCase():將字元串所有字元轉成大寫;
.charAt(n):截取數組的第n個數組,相當於str[n];
.indexOf("str",index):從index位置開始,查找子串在字元串中出現的位置,如果沒有找到返回-1;其他從數組的indexOf方法;
.lastIndexOf("str",index):同數組;
.substring(begin,end):從字元串中截取子串
  >>>只傳入一個參數,表示從begin開始,到最後;
  >>>傳入兩個參數,表示begin和end的區間,左閉右開區間;
.split("分隔符"):將字元串已指定分隔符分隔,存入數組中。存入空""表示將字元串的每個字元分開放入數組;
.replace("old","new"):將字元串的第一個old替換為new。
  >>>第一個參數,可以是普通字元串,也可以是正則表達式;
  >>>如果是普通字元串,則只替換第一個old。如果是正則表達式,則可以根據正則的寫法要求,進行替換;

Date 日期類

1、 new Date():返回當前最新時間;new Date("2017,8,31,12:34:56");返回指定的時間  
2、常用方法:
.getFullYear():獲取4位年份;
.getMonth():獲取月份0~11
.getMonth():獲取一個月中的第幾天 1~31
.getDay():獲取一周中的第幾天 0~6,0表示周天
.dates.getHours():獲取小時
.getMinutes():獲取分鐘
.getSeconds():獲取秒

如何製作動態日期

運行結果為:

三、自定義對象

1、基本概念
①對象:對象是擁有一系列無序屬性和方法的集合。
②鍵值對:對象中的數據,是以鍵值對的形式存在。對象的每個屬性和方法,都對應著一個鍵名,以鍵取值。
③屬性:描述對象特征的一系列變數,稱為屬性。[對象中的變數]
④方法:描述對象行為的一系列函數,稱為方法。[對象中的函數]
2、對象的聲明
①字面量聲明: var obj = {
        key1 : value,
        key2 : value,
        func : function(){},
       }
  >>>對象中的數據是以鍵值對形式存儲,鍵與值之間用:分隔。多個鍵值對之間用,分隔。
  >>>對象中的鍵可以是除了數組/對象以外的任何數據類型。但是一般我們只用普通變數名作為鍵。
  >>>對象中的值可以是任何數據類型,包括數組和對象。
②使用new關鍵字聲明: var obj = new Object()
           obj.key1 = value1,
           obj.func1= function(){}
3、對象中屬性和方法的讀寫:
①.運算符
對象內部:this.屬性 this.方法();  對象外部:對象名.屬性 對象名.方法;

②通過["key"]調用:對象名.["屬性名"] 對象名.["方法名"]();
  >>>如果鍵中包括特殊字元,則只能使用第②中方式;
  >>>對象中,直接寫變數名,預設為調用全局變數。如果需要調用對象自身的屬性或者方法。需要使用對象名.屬性,或者this.屬性。person.age this.age 。都可以,但推薦使用this關鍵字;

③刪除對象的屬性和方法:delete 對象名.屬性名/方法名。delete person.age;
    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ###理解對象 ECMA-262把對象定義為:“無序屬性的集合,其屬性可以包含基本值、對象或者函數。”嚴格來講,這就相當於說對象是一組沒有特定順序的值。對象的每個屬性或方法都有一個名字,而每個名字都映射到一個值。 我們可以把ECMAScript的對象想象成散列表:無非就是一組名值對,其中的值可以是數 ...
  • 概述 對於企業級後臺產品來說,Table 應該是使用最頻繁的組件了,它通常比 Form 和 Chart 的使用還頻繁。對於這麼一個常用的組件,我們決定要把它從 RSuite 中單獨出來開發,並且要具有一定的通用性,適應很多場景。 首先看一下,Table 完成的效果。 預覽地址: https://rs ...
  • 粗體判斷js中的數據類型有一下幾種方法:typeof、instanceof、 constructor、 prototype、 $.type()/jquery.type(),接下來主要比較一下這幾種方法的異同。 先舉幾個例子: var a = "iamstring.";var b = 222;var ...
  • 在實際開發中,經常需要為Dom元素綁定事件,如果頁面上有4個li元素,點擊對應的li,彈出對應的li內容,怎麼做呢?是不是很簡單? 大多數人的做法都是:獲取元素,綁定事件 如果頁面上有1w個元素, 甚至10w個元素呢? 繼續使用上述方式,會有很大的性能問題,這個時候,有人可能要問,實際中的項目 哪有 ...
  • javascript作為一個面向對象的語言,理解 對象、原型、閉包、模塊模式等技術點對於成為一名合格的javascript程式員相當重要,多年沒寫過blog,今天就先拋個玉,在下基本也不做前端,但頗感興趣,願意和大家一起學習。此篇只是對自己認為的比較重要的知識點進行了說明,連貫性不是特別好,大家共同 ...
  • 這兩天在學習HTML5+CSS3樣式,按老師的作業做了一個魔方! ...
  • 在web開發中有以下幾種情況會出現 405的錯誤; 1 在前端的請求方式與後臺的不匹配: 例如後臺通過post方式,而你在前端用get方式則會出現405的錯誤。這樣只要讓他們 保持一致就不會報錯。 2 在前端提交的請求參數與後端不一致: 在很多時候我們會在請求路徑後面拼接幾個參數,一旦我們拼接的參數... ...
  • 一直以來本人認為想深入瞭解一門語言,不光是讓自己變成擼sir,更需要時間的錘煉。能經得起時間考驗的東西更值得擁有。學習和使用Javascript一晃都7年了,最近才感覺自己對他才有頓悟,不知道是否來得有點遲。本文歸納了我對 JS中作用的理解,希望得學習有所幫助。 特別說明:這是從另一個側面(函數域的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...