網頁設計實戰之JavaScript(8) --JS的內置對象(Date、RegExp、Error、Array、Document、Window)

一、Date對象

Date對象 用於處理日期和時間。

1、創建 Date 對象

通過 new 關鍵詞來定義 Date 對象。Date 對象會自動把當前日期和時間保存爲其初始值。

//四種方式初始化日期:【接受不同參數】
new Date() // 當前日期和時間
new Date(milliseconds) //返回從 1970 年 1 月 1 日至今的毫秒數
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
//參數:上面的參數大多數都是可選的,默認爲0。

(1)、 默認參數→0

new Date():取當前日期和時間

(2)、 參數→毫秒數

new Date(milliseconds):從1970年1月1日00:00:00 UTC開始計算的毫秒數。如果將Unix時間戳作爲參數,必須將Unix時間戳乘以1000。

(3)、 參數→日期字符串

new Date(dateString):一個日期字符串,返回所對應的時間。所有可以被Date.parse()方法解析的日期字符串,都可以當作Date對象的參數

(3)、 參數→年、月、日、小時、分鐘、秒和毫秒year, month, day, hours, minutes, seconds, milliseconds):對應的年、月、日、小時、分鐘、秒和毫秒。

注:
至少需要指定兩個參數(年和月),其他參數都是可選的,默認爲0。若只有一個參數,Date對象會將其解釋爲毫秒數。

2、常用方法

(1)、get類:

getTime(): 返回實例對象當前時間距離1970年1月1日00:00:00對應的毫秒數
getFullYear(): 返回調用這個方法時,當前或指定日期的年份(四位年份)
getMonth(): 返回月份,(0表示1月,11表示12月)調用這個方法時,當前或指定日期的月份
getDate(): 返回日(號),調用這個方法時,當前或指定日期的月份中的幾號
getDay(): 返回星期,週日爲0,週一爲1,以此類推(0-6)
getHours(): 返回小時(0-23)
getMinutes(): 返回分鐘(0-59)
getSeconds(): 返回秒(0-59)
getMilliseconds(): 返回毫秒(0-999)

(2)、set類:

etTime(): 以毫秒設置 Date 對象。
setFullYear(): 設置年份。
setMonth(month,day): 設置月份。可用於設置月份中的某一天。
setDate(): 設置一個月的某一天。
setHours(hour,min,sec,millisec): 設置指定的時間的小時字段。該方法可用於設置分鐘,秒以及毫秒數。
setMinutes(min,sec,millisec): 用於設置指定時間的分鐘字段。該方法同樣可用於設置秒數與毫秒數。
setSeconds(sec,millisec): 用於設置日期對象的秒字段。可以用於設置毫秒數。
setMilliseconds(): 用於設置指定時間的毫秒字段。(0-999)

(3)、轉換爲字符串

toString(): 把 Date 對象轉換爲字符串
toDateString(): 返回日期的字符串形式
toLocaleDateString(): 返回一個字符串,代表日期的當地寫法
toLocaleTimeString(): 返回一個字符串,代表時間的當地寫法

(4)、Date.now()

Date.now(): 返回當前距離1970年1月1日00:00:00的毫秒數

(5)、parse(string)

parse():解析日期字符串,返回距離1970年1月1日 00:00:00的毫秒數.

<script type="text/javascript">
   function countTime() {
       //獲取當前時間
       var date = new Date();
       var now = date.getTime();
       console.log(date,"=====",now);
       //設置截止時間
       var str="2018/12/18 16:50:03";
       var endDate = new Date(str);
       var end = endDate.getTime();

       console.log(endDate,"=====",end);
       //時間差
       var timeGap = end-now;
       //定義變量 d,h,m,s保存倒計時的時間
       var d,h,m,s;
       if (timeGap>=0) {
           d = Math.floor(timeGap/1000/60/60/24);
           h = Math.floor(timeGap/1000/60/60%24);
           m = Math.floor(timeGap/1000/60%60);
           s = Math.floor(timeGap/1000%60);
           //遞歸每秒調用countTime方法,顯示動態時間效果
           setTimeout(countTime,1000);//計時器
       }
       else {
           d = 0;
           h = 0;
           m = 0;
           s = 0;
       }
       //將倒計時賦值到div中
       document.getElementById("dayDate").innerHTML = d+"天";
       document.getElementById("hourDate").innerHTML = h+"時";
       document.getElementById("minuteDate").innerHTML = m+"分";
       document.getElementById("secondDate").innerHTML = s+"秒";
   }
</script>

二、RegExp對象

RegExp 對象表示正則表達式,它是對字符串執行模式匹配的強大工具。

  • 直接量語法:/pattern/attributes
  • 創建RegExp對象的語法:new RegExp(pattern, attributes);
    參數:
  • 參數 pattern 是一個字符串,指定了正則表達式的模式或其他正則表達式。
  • 參數 attributes 是一個可選的字符串,包含屬性 “g”、“i” 和 “m”,分別用於指定全局匹配、不區分大小寫的匹配和多行匹配。ECMAScript 標準化之前,不支持 m 屬性。如果 pattern 是正則表達式,而不是字符串,則必須省略該參數。
  • 返回值
    一個新的 RegExp 對象,具有指定的模式和標誌。如果參數 pattern 是正則表達式而不是字符串,那麼 RegExp() 構造函數將用與指定的 RegExp 相同的模式和標誌創建一個新的 RegExp 對象。
    如果不用 new 運算符,而將 RegExp() 作爲函數調用,那麼它的行爲與用 new 運算符調用時一樣,只是當 pattern 是正則表達式時,它只返回 pattern,而不再創建一個新的 RegExp 對象。

1、正則表達式字面量與使用構造函數的場景比較:

  • 正則表達式字面量在腳本加載後編譯。若你的正則表達式是常量,使用這種方式可以獲得更好的性能。
  • 使用構造函數,提供了對正則表達式運行時的編譯。當你知道正則表達式的模式會發生改變, 或者你事先並不瞭解它的模式或者是從其他地方(比如用戶的輸入),得到的代碼這時比較適合用構造函數的方式。

2、RegExp對象的使用

RegExp(pattern , [, flags])
flags,表示匹配模式,可以是下面的幾種值:
g,全局匹配
i,忽略大小寫
m,開始和結束字符(^ 和 $)在多行模式工作,即:^ 和 $ 可以匹配字符串中每一行的開始和結束(行是由 \n 或 \r 分割的),而不只是整個輸入字符串的最開始和最末尾處

var str="Every man in the world! Every woman on earth!";

patt=/man/g;
str2=str.replace(patt, "person");
console.log(str2);	//Every person in the world! Every woperson on earth!

var str = "hello Itbilu.com"; 
var patt = new RegExp("itbilu","ig");
var result = patt.exec(str);

console.log(result);  // [ 'Itbilu', index: 6, input: 'hello Itbilu.com' ]
console.log(result[0]); //Itbilu
console.log(result.index); // 6

(1)、方括號

方括號用於查找某個範圍內的字符

表達式 描述
[abc] 查找方括號之間的任何字符。
[^abc] 查找任何不在方括號之間的字符。
[0-9] 查找任何從 0 至 9 的數字。
[a-z] 查找任何從小寫 a 到小寫 z 的字符。
[A-Z] 查找任何從大寫 A 到大寫 Z 的字符。
[A-z] 查找任何從大寫 A 到小寫 z 的字符。
[adgk] 查找給定集合內的任何字符。
[^adgk] 查找給定集合外的任何字符。
(red|blue|green) 查找任何指定的選項。

(2)、元字符

元字符是擁有特殊含義的字符:

元字符 描述
. 查找單個字符,除了換行和行結束符。
\w 查找單詞字符。
\W 查找非單詞字符。
\d 查找數字。
\D 查找非數字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
\0 查找 NUL 字符。
\n 查找換行符。
\f 查找換頁符。
\r 查找回車符。
\t 查找製表符。
\v 查找垂直製表符。
\xxx 查找以八進制數 xxx 規定的字符。
\xdd 查找以十六進制數 dd 規定的字符。
\uxxxx 查找以十六進制數 xxxx 規定的 Unicode 字符。

(3)、量詞

量詞 描述
n+ 匹配任何包含至少一個 n 的字符串。
n* 匹配任何包含零個或多個 n 的字符串。
n? 匹配任何包含零個或一個 n 的字符串。
n{X} 匹配包含 X 個 n 的序列的字符串。
n{X,Y} 匹配包含 X 至 Y 個 n 的序列的字符串。
n{X,} 匹配包含至少 X 個 n 的序列的字符串。
n$ 匹配任何結尾爲 n 的字符串。
^n 匹配任何開頭爲 n 的字符串。
?=n 匹配任何其後緊接指定字符串 n 的字符串。
?!n 匹配任何其後沒有緊接指定字符串 n 的字符串。

(4)、RegExp 對象屬性

屬性 描述
global RegExp 對象是否具有標誌 g。
ignoreCase RegExp 對象是否具有標誌 i。
lastIndex 一個整數,標示開始下一次匹配的字符位置。
multiline RegExp 對象是否具有標誌 m。
source 正則表達式的源文本。

(5)、RegExp 對象方法

方法 描述
compile 編譯正則表達式。
exec 檢索字符串中指定的值。返回找到的值,並確定其位置。
test 檢索字符串中指定的值。返回 true 或 false。

(6)、支持正則表達式的 String 對象的方法

方法 描述
search 檢索與正則表達式相匹配的值。
match 找到一個或多個正則表達式的匹配。
replace 替換與正則表達式匹配的子串。
split 把字符串分割爲字符串數組。

三、Error對象

1、概念

error是指程序中的非正常運行狀態,在其他編程語言中稱爲“異常”或“錯誤”,解釋器會爲每個錯誤情形創建並拋出一個Error對象,其中包含錯誤的描述信息;
ECMAScript定義了六種類型的錯誤,除此之外,還可以使用Error構造方法創建自定義的Error對象,並使用throw語句拋出該對象;
六種錯誤:

  • 1)ReferenceError:引用錯誤,要用的東西沒找到;
  • 2)TypeError:類型錯誤,錯誤的調用了對象的方法;
  • 3)RangeError:範圍錯誤,專指參數超範圍;
  • 4)SyntaxError:語法寫錯了;
  • 5)EvalError:eval()方法錯誤的使用;
  • 6)URIError:URI地址錯誤;

2、錯誤處理(捕捉)

即使程序發生錯誤,也保證不異常中斷的機制.
try{
// 可能發生錯誤的代碼
}catch(err){
// 只有發生錯誤時才執行的代碼
}finally{
// 無論是否出錯,肯定都要執行的代碼
}

使用要點:
1)使用try包裹的代碼,即使不出錯,效率也比不用try包裹的代碼低;
2)在try中,儘量少的包含可能出錯的代碼;
3)無法提前預知錯誤類型的錯誤,必須用try…catch…捕獲,如果已經提前預知錯誤的類型,就用if…else…來代替try…catch,除掉錯誤預知的這個前提,if…else…的用法和try…catch…的用法是基本相同的,且if…else…的可讀性比try…catch…更強,語句理解能力也更好,開發人員與用戶更加傾向於使用if…else…,但是如果無法判斷語句是否正確的話,使用try…catch…會更加保險;
4)finally可以省略;

  // if...else...
   function err(a) {
      if (!isNaN(a)) {
        console.log('你輸入的數字是:' + a);
      } else {
        throw new Error('你輸入的是非數字,請重新輸入!')
      }
    }
    var a = prompt('請輸入一位數字:');
    err(a);    

四、Array對象

數組是值的有序集合。每個值叫做一個元素,而每個元素在數組中有一個位置,以數字表示,稱爲索引。JavaScript數組是無類型:數組元素可以是任意類型,並且同一個數組中的不同元素也可能有不同的類型。

1、定義方式

var names = new Array(“張三”, “李四”, “王五”);
var names = [“張三”, “李四”, “王五”];

2、屬性length

length:表示數組內的元素長度。
var names = [“張三”, “李四”, “王五”];
console.log(names.length);

3、實例方法

常用方法:

  • unshift() :在數組頭部插入元素

  • shift() :移除並返回數組的第一個元素

  • push() :在數組尾部插入元素

  • pop() :移除並返回數組的最後一個元素

  • concat() :把元素銜接到數組中。不會修改原先的array,返回新的數組

  • every() :依次遍歷元素,判斷每個元素是否都爲true

  • filter() :依次遍歷元素,返回包含符合條件元素的新的數組

  • forEach() :依次遍歷元素,執行指定的函數;無返回值

  • indexOf() :在數組中查找匹配元素。若不存在匹配的元素時,就返回-1。查找的時候使用"==="運算符,所以要區分1和’1’ .

  • join() :將數組中所有元素通過一個分隔符拼接爲一個字符串

  • lastIndexOf :在數組中反向查找匹配元素。若不存在匹配的元素時,就返回-1。查找的時候使用"==="運算符,所以要區分1和’1’

  • map() :依次遍歷並計算每個元素,返回計算好的元素的數組

  • slice(startIndex,endIndex) :返回數組的一部分

  • sort(opt_orderFunc) :按一定的規則進行排序

  • splice() :插入、刪除數組元素

  • toString() :將數組中所有元素通過一個英文逗號’,'拼接爲一個字符串

  • unshift() :在數組頭部插入元素

  • Array.isArray() :判斷對象是否爲數組

var demoArray = ['a', 'b', 'c'];
var demoArray2 = demoArray.concat('e');
var demoArray = [1, 2, 3];
var rs = demoArray.every(function (value, index, self) {
    return value > 0;
});
var rs = demoArray.filter(function (value, index, self) {
    return value > 0;
});
demoArray.forEach(function (value, index, self) {
    console.log(value); // => 依次輸出:1  2  3
});

['a', 'b', 'c'].indexOf('a'); // =>0
['a', 'b', 'c'].join(); // => 'a,b,c'
['a', 'b', 'c'].lastIndexOf('a'); // => 0
demoArray.map(function (value, index, self) {
    return value * 2;
}); // => [2, 4, 6]
var demoArray = ['a', 'b', 'c'];
demoArray.pop(); // => c
demoArray.push('d'); // => 4, demoArray : ['a', 'b',  'd']
demoArray.reverse(); // d,b,a
[1, 2, 3, 4, 5, 6].slice(0, 4); // => [1, 2, 3, 4] :截取序號0到序號3(序號4的前一個)的元素
[1, 3, 5, 2, 4, 11, 22].sort(); // => [1, 11, 2, 22, 3, 4, 5] :這裏都元素都被轉換爲字符,11的字符在2前
var demoArray = ['a', 'b', 'c', 'd', 'e'];
var demoArray2 = demoArray.splice(0, 2); // 刪除從序號從0開始的2個元素,返回包含刪除元素的數組:['a', 'b']
[1, 2, 3, 4, 5].toString(); // => '1,2,3,4,5'
demoArray.unshift('a'); // => demoArray:['a']
Array.isArray(['a', 'b', 'c']); // => true
for (var i = 0, length = demoArray.length; i < length; i++) {
    console.log(demoArray[i]); // => 逐個輸出數組內的元素
}
var demoArrayB = demoArrayA; // 淺度複製:把數組A 賦值給數組B 
var demoArrayB = demoArrayA.concat(); // 使用concat()方法,返回新的數組

五、Document對象

在瀏覽器中,與用戶進行數據交換都是通過客戶端的javascript代碼來實現的,而完成這些交互工作大多數是document對象及其部件進行的,因此document對象是一個比較重要的對象。
document對象是文檔的根節點,window.document屬性就指向這個對象。也就是說,只要瀏覽器開始載入HTML文檔,這個對象就開始存在了,可以直接調用。

document.childNodes屬性返回該對象的所有子節點。對於HTML文檔來說,document對象一般有兩個子節點。

  • 第一個子節點是document.doctype,表示文檔類型節點(DocumentType)。對於HTML5文檔來說,該節點就代表。

  • 第二個子節點是document.documentElement,表示元素節點(Element),代表:。

1、document 對象的屬性

屬性 說明
document.title 設置文檔標題等價於HTML的標籤
document.bgColor 設置頁面背景色
document.linkColor 未點擊過的鏈接顏色
document.alinkColor 激活鏈接(焦點在此鏈接上)的顏色
document.fgColor 設置前景色(文本顏色)
document.vlinkColor 已點擊過的鏈接顏色
document.URL 設置URL屬性從而在同一窗口打開另一網
document.fileCreatedDate 文件建立日期,只讀屬性
document.fileModifiedDate 文件修改日期,只讀屬性
document.fileSize 文件大小,只讀屬性
document.cookie 設置和讀出cookie
document.charset 設置字符集 簡體中文:gb2312

指向特定元素集合的屬性
document.all :文檔中所有的元素,Firefox不支持該屬性。
document.forms :所有的form元素。
document.images:所有的img元素。
document.links:所有的a元素。
document.scripts:所有的script元素。
document.styleSheets:所有的link或者style元素。

2、對象方法:

方法 說明
document.write() 動態向頁面寫入內容
document.createElement(Tag) 創建一個html標籤對象
document.getElementById(ID) 獲得指定ID值的對象
document.getElementsByTagName(tagname) 獲得指定標籤名的對象
document.getElementsByName(Name) 獲得指定Name值的對象
document.getElementsByClassName(classname) 獲得指定類名的對象(html5 API)

在這裏插入圖片描述

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <title></title>
    <script type="text/javascript">
       function btnClick1() {
            var txt = document.getElementById("tb1");
          alert(txt.value);
            //alert(tb1.value);  //不推薦tb1.value這種方式
        }
         function btnClick2() {
             var txt = document.getElementById("tb2");
            alert(txt.value);
             //alert(Form1.tb2.value);  //不推薦tb1.value這種方式,如果<input>被<form>標籤包含着,就要Form1.tb2.value取得文本框的值
         }
    </script>
 </head>
<body>
    <input type="text" id="tb1" />
    <input type="button" value="TextBox1" onclick="btnClick1()" />
    <form action="Event.htm" id="Form1">
       <input type="text" id="tb2" />
        <input type="button" value="TextBox2" onclick="btnClick2()" />   
   </form>
 </body>
 </html>

六、Window對象

window對象是BOM的核心,window對象指當前的瀏覽器窗口。除了是BOM中所有對象的父對象外,還包含一些窗口控制函數。

JavaScript中的任何一個全局函數或變量都是window的屬性。
self對象與window對象完全相同,self通常用於確認就是在當前的窗體內。window、self、window.self三者是等價的。

1、window的子對象

window的主對象主要有如下幾個:

  • JavaScript document 對象
  • JavaScript frames 對象
  • JavaScript history 對象
  • JavaScript location 對象
  • JavaScript navigator 對象
  • JavaScript screen 對象

2、Window對象常用方法

方法 描述
alert 顯示包含由應用程序自定義消息的對話框。
attachEvent 將指定函數綁定到事件,以便每當該事件在對象上觸發時都調用該函數。
blur 使元素失去焦點並觸發 onblur 事件。
clearInterval 使用 setInterval 方法取消先前開始的間隔事件。
clearTimeout 取消先前用 setTimeout 方法設置的超時事件。
close 關閉當前瀏覽器窗口或 HTML 應用程序(HTA)。
confirm 顯示一個確認對話框,其中包含一個可選的消息和確定取消按鈕。
createPopup 創建彈出窗口。
detachEvent 從事件中取消指定函數的綁定,這樣當事件觸發時函數就不會收到通知了。
e-x-e-c-Script (此單詞實際使用無中線,系統屏蔽特殊原因修改) 以給定語言執行指定的腳本。
focus 使得元素得到焦點並執行由 onfocus 事件指定的代碼。
moveBy 將窗口的位置移動指定 x 和 y 偏移值。
moveTo 將窗口左上角的屏幕位置移動到指定的 x 和 y 位置。
navigate 在當前窗口中裝入指定 URL。
open 打開新窗口並裝入給定 URL 的文檔。
print 打印與窗口關聯的文檔。
prompt 顯示一個提示對話框,其中帶有一條消息和一個輸入框。
resizeBy 更改窗口的當前位置縮放指定的 x 和 y 偏移量。
resizeTo 將窗口的大小更改爲指定的寬度和高度值。
scroll 將窗口滾動到自左上角起指定的 x 和 y 偏移量。
scrollBy 將窗口滾動 x 和 y 偏移量。
scrollTo 將窗口滾動到指定的 x 和 y 偏移量。
setActive 設置對象爲當前對象而不將對象置爲焦點。
setInterval 每經過指定毫秒值後計算一個表達式。
setTimeout 經過指定毫秒值後計算一個表達式。
showHelp 顯示幫助文件。此方法可用於 Microsoft HTML 幫助。
showModalDialog 創建一個顯示指定 HTML 文檔的模式對話框。
showModelessDialog 創建一個顯示指定 HTML 文檔的非模式對話框。

2、Window對象常用屬性

屬性 描述
closed 獲取引用窗口是否已關閉。
defaultStatus 設置或獲取要在窗口底部的狀態欄上顯示的缺省信息。
dialogArguments 設置或獲取傳遞給模式對話框窗口的變量或變量數組。
dialogHeight 設置或獲取模式對話框的高度。
dialogLeft 設置或獲取模式對話框的左座標。
dialogTop 設置或獲取模式對話框的頂座標。
dialogWidth 設置或獲取模式對話框的寬度。
frameElement 獲取在父文檔中生成 window 的 frame 或 iframe 對象。
length 設置或獲取集合中對象的數目。
name 設置或獲取表明窗口名稱的值。
offscreenBuffering 設置或獲取對象在對用戶可見之前是否要先在屏幕外繪製。
opener 設置或獲取創建當前窗口的窗口的引用。
parent 獲取對象層次中的父窗口。
returnValue 設置或獲取從模式對話框返回的值。
screenLeft 獲取瀏覽器客戶區左上角相對於屏幕左上角的 x 座標。
screenTop 獲取瀏覽器客戶區左上角相對於屏幕左上角的 y 座標。
self 獲取對當前窗口或框架的引用。
status 設置或獲取位於窗口底部狀態欄的信息。
top 獲取最頂層的祖先窗口。

3、Window的事件

事件 描述
onactivate 當對象設置爲活動元素時觸發。
onafterprint 對象所關聯的文檔打印或打印預覽後立即在對象上觸發。
onbeforedeactivate 在 activeElement 從當前對象變爲父文檔其它對象之前立即觸發。
onbeforeprint 對象的關聯文檔打印或打印預覽前在對象上觸發。
onbeforeunload 在頁面將要被卸載前觸發。
onblur 在對象失去輸入焦點時觸發。
oncontrolselect 當用戶將要對該對象製作一個圖像、表格和任意絕對定位的元素中的控件。">控件選中區時觸發。
ondeactivate 當 activeElement 從當前對象變爲父文檔其它對象時觸發。
onerror 當對象裝載過程中發生錯誤時觸發。
onfocus 當對象獲得焦點時觸發。
onhelp 當用戶在瀏覽器爲當前窗口時按 F1 鍵時觸發。
onload 在瀏覽器完成對象的裝載後立即觸發。
onmove 當對象移動時觸發。
onmoveend 當對象停止移動時觸發。
onmovestart 當對象開始移動時觸發。
onresize 當對象的大小將要改變時觸發。
onresizeend 當用戶更改完控件選中區中對象的尺寸時觸發。
onresizestart 當用戶開始更改控件選中區中對象的尺寸時觸發。
onscroll 當用戶滾動對象的滾動條時觸發。
onunload 在對象卸載前立即觸發。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章