一、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 的文檔。 |
打印與窗口關聯的文檔。 | |
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 | 在對象卸載前立即觸發。 |