一搁吓、基本對象
1.定義:屬性的無序集合原茅,每個(gè)屬性都是一個(gè)名/值對,屬性值可以包括基本值擎浴,對象员咽,函數(shù)。
2.分類:
- 內(nèi)置對象:JavaScript已經(jīng)規(guī)定好的一些對象
- 宿主對象:是由JavaScript解釋器所嵌入的宿主環(huán)境(比如Web瀏覽器)定義的贮预。
- 自定義對象:開發(fā)者自己定義的一些對象
3.對象定義方法
- 字面量方法
var 變量 = {};
var 變量 = {
屬性名 : 屬性值;
屬性名 : 屬性值契讲;
...
}
- new關(guān)鍵字方法
var obj = new Object({
屬性名 : 屬性值;
屬性名 : 屬性值仿吞;
...
});
- 構(gòu)造函數(shù)
function 函數(shù)名(){}
var 變量 = new 函數(shù)名();
- Object.create()
var 變量 = Object.create({neir9ong})
4.對象的屬性
? 屬性名:描述元素某個(gè)特征的名稱,對應(yīng)的值我們稱之為屬性值
? 屬性名和屬性值需要對應(yīng)捡偏,常常稱之為鍵值對(key-value),使用‘唤冈,’隔開
5.屬性的操作
? 動(dòng)態(tài)屬性:屬性值可以不斷添加和修改
? 修改:對象.屬性名 = 屬性值;/對象["屬性名"] = 屬性值;
? 添加:對象.屬性名 = 屬性值;/對象["屬性名"] = 屬性值银伟;
? 刪除:delete 對象.屬性名;
? 獲饶愫纭:對象.屬性/對象[“屬性”];
6.屬性的遍歷
? for in循環(huán):
for (var 變量 in 對象名){
變量 就是每個(gè)屬性名
對象[變量] 屬性值
}
二绘搞、string
1.構(gòu)造方法:
var str = new Srting(s) //構(gòu)造函數(shù)
function String(s) //轉(zhuǎn)換函數(shù)
和其他數(shù)據(jù)昨晚運(yùn)算之后會(huì)變成基本數(shù)據(jù)類型
2.屬性:length-該字符串中的字符數(shù)
3.方法API
function | description | |
---|---|---|
charAt() |
取出字符串中指定位置的元素 | |
charCodeAt() |
返回字符串中指定位置的字符的Unicode編碼 | |
concat() |
將一個(gè)或者多個(gè)值連接成一個(gè)字符串 | |
indexOf() |
查找指定字符在字符串中第一次出現(xiàn)的位置 | |
lastIndexOf() |
在指定字符串中從后開始尋找一個(gè)字符或者子串 | |
localeCompare() |
使用本地定義的順序比較字符串 | |
match() |
使用正則表達(dá)式執(zhí)行模式匹配 | |
replace() |
使用正則表達(dá)式執(zhí)行查找與替換操作 | |
search() |
在一個(gè)字符串中查找匹配某個(gè)正則表達(dá)式的子串 | |
slice() |
返回字符串中的一個(gè)切片或子串 | |
split() |
將一個(gè)字符串分割為由字符串組成的數(shù)組 | |
substr() |
提取字符串的一個(gè)子串 | |
substring() |
提取字符串的一個(gè)子串 | |
toUpperCase() |
將所有字符轉(zhuǎn)化為大寫 | |
toLowerCase() |
將所有字符轉(zhuǎn)化為小寫 | |
trim() |
刪除空白字符 | |
valueOf |
返回原始字符串的值 | |
fromCharCode() |
從字符編碼創(chuàng)建一個(gè)字符串 | |
charCodeAt() |
取得字符串中指定字符的編碼 | |
includes() |
方法用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值 | |
matchAll() |
可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配 |
三傅物、Number
- 定義方法
var 變量名 = new Number(); //引用數(shù)據(jù)類型夯辖,Object,與別人運(yùn)算之后變?yōu)榛緮?shù)據(jù)類型
-
isNaN()----內(nèi)置數(shù)據(jù)類型:true--是NAN類型 false--不是NAN類型
常用來判斷是不是數(shù)字類型:false--數(shù)字類型 true--不是數(shù)字類型
number.tofixed(保留的小數(shù)位)----將數(shù)字進(jìn)行四舍五入董饰,保留指定小數(shù)位蒿褂,返回字符串
四、Boolean
var 變量名 = new Boolean(true); //引用數(shù)據(jù)類型卒暂,Object
五啄栓、Array
數(shù)組定義:數(shù)組是值的有序集合
-
定義數(shù)組的方法
- 字面量方式
var 變量名 = []; var 變量名 = [值1,值2,值3...];
- 關(guān)鍵字new
var 變量名 = new Array(數(shù)字); //數(shù)字就是數(shù)組的長度 var 變量名 = new Array(非數(shù)字); //為數(shù)組的元素 var 變量名 = new Array(值1,值2...); //數(shù)組的元素 var 變量名 = new Array(); //空數(shù)組
JavaScript數(shù)組是無類型的,數(shù)組元素可以是任意類型也祠。
-
訪問方式
- 下標(biāo):每個(gè)元素對應(yīng)的編號(hào)
- 訪問數(shù)組元素:數(shù)組[下標(biāo)]昙楚;
- 修改/添加:數(shù)組[下標(biāo)] = 值;
屬性:數(shù)組.length----返回?cái)?shù)組的長度
-
遍歷數(shù)組:
for(var i = 0, len = arr.length; i < len; i++) { console.log(arr[i]); }
-
數(shù)組的分類
按照數(shù)組的維度:一維數(shù)組和多維數(shù)組
-
索引數(shù)組---下標(biāo)是數(shù)字诈嘿,從0開始 關(guān)聯(lián)數(shù)組----下標(biāo)不是數(shù)字
var arr[]; arr["name"] = "張三"; arr["age"] =20;
關(guān)聯(lián)數(shù)組的length屬性不可靠祈匙,使用for in遍歷
-
方法API:
function description concat(值1芦昔,值2)
將參數(shù)拼接到數(shù)組的尾部。返回新數(shù)組 join()
將數(shù)組使用連接符變?yōu)樽址瑳]有參數(shù)默認(rèn)使用逗號(hào)連接 toString()
將數(shù)組轉(zhuǎn)化為字符串思犁,不能傳入連接符。 slice(start,end)
截取數(shù)組的一部分罪治,形成新的數(shù)組 push(值1鹃答,值2...)
往數(shù)組末尾添加元素,返回?cái)?shù)組的新長度,改變原來的數(shù)組 pop()
從數(shù)組末未刪除元素李滴,返回被刪除的那個(gè)元素螃宙,改變原來的數(shù)組 unshift(值1,值2...)
在數(shù)組頭添加新元素,返回?cái)?shù)組的新長度所坯,改變原來的數(shù)組 shift()
在數(shù)組的開頭刪除一個(gè)元素谆扎,返回刪除的元素的值,改變了原來的數(shù)組 reverse()
將數(shù)組進(jìn)行反轉(zhuǎn)芹助,改變了原數(shù)組 indexOf()
查找指定字符在數(shù)組中出現(xiàn)的位置堂湖,返回第一次出現(xiàn)的下標(biāo) forEach(function())
遍歷數(shù)組,接收一個(gè)匿名數(shù)組作為參數(shù)状土,函數(shù)三個(gè)參數(shù)无蜂,值、下標(biāo)蒙谓、數(shù)組 map(function())
遍歷數(shù)組,與forEach相同斥季,但是在匿名函數(shù)里必須return,將值作為新的數(shù)組 sort()
數(shù)組排序累驮。改變原來的數(shù)組酣倾,返回排序后的數(shù)組舵揭,用排序函數(shù)/比較函數(shù) splice(start,num,值1,值2...)
會(huì)修改原數(shù)組躁锡,從第一個(gè)參數(shù)截取午绳,第二個(gè)參數(shù)刪除的個(gè)數(shù),第三個(gè)之后是添加的元素稚铣。
六箱叁、Object
方法 | 描述 |
---|---|
對象.hasOwnProperty() | 判斷對象是有有這個(gè)屬性,返回布爾值 |
delete 對象.屬性 | 刪除屬性 |
對象.proto 屬性 | 指向的是實(shí)例化它的類 |
七惕医、Math
數(shù)學(xué)操作相關(guān)的:往往和數(shù)字類型的數(shù)據(jù)一起操作耕漱,不需要new-------==權(quán)威指南p778==
function | description |
---|---|
Math.abs() | 取絕對值 |
Math.ceil() | 向上取整 |
Math.floor() | 向下取整 |
Math.round() | 四舍五入取整 |
Math.max() | 最大值 |
Math.min() | 最小值 |
Math.random() | 返回0-1之間的隨機(jī)小數(shù),包含0不含1= |
八抬伺、Date
- 創(chuàng)建
var time = new Date()螟够; //時(shí)間對象
計(jì)算機(jī)的系統(tǒng)時(shí)間:1970年 01-01 00:00:00
-
獲取時(shí)間信息:
- 獲取年:time.getFullYear()
- 獲取月:time.getMonth() //月份從0開始
- 獲取日:time.getDate()
- 獲取星期:time.getDay()
- 獲取小時(shí):time.getHours()
- 獲取分鐘:time.getMinutes()
- 獲取秒:time.getSeconds()
- 獲取毫秒:time.getMilliseconds()
-
獲取完整的日期信息
- time.toLocalString()
- 只獲取時(shí)間:time.toLocalTimeString()
- 只獲取日期:time.toLocalDateString()
-
封裝一個(gè)獲取日期時(shí)間對象
function getTime(type) { var time = new Date(); var y = time.getFullYear(); var m = time.getMonth() + 1; var d = time.getDate(); var h = time.getHours(); var i = time.getMinutes(); var s = time.getSeconds(); //進(jìn)行補(bǔ)位 y < 10 ? "0" + y : y; m < 10 ? "0" + m : m; d < 10 ? "0" + d : d; h < 10 ? "0" + h : h; i < 10 ? "0" + i : i; s < 10 ? "0" + s : s; if(type) { if(!isNaN(type)){ if(type === 1){ return y + "/" + m + "/" + d; } else if(type === 2) { return h + ":" + i + ":"+ s; } else { console.log("0:獲取完整的日期時(shí)間 1:獲取日期 2:獲取時(shí)間"); } } else { console.log("0:獲取完整的日期時(shí)間 1:獲取日期 2:獲取時(shí)間"); } } else { return y + "/" + m + "/" + d + " " + h + ":" + i + ":"+ s; } }
-
設(shè)置時(shí)間
var timeStr = "2019-12-12T12:00:00"; var time = new Date(timeStr); console.log(time.getFullYear());
-
時(shí)間計(jì)算
//獲取從計(jì)算機(jī)開始到現(xiàn)在的毫秒數(shù) var curTime = new Date(); console.log(curTime.getTime()); //將毫秒數(shù)變?yōu)闀r(shí)間 console.log(new Date(1576158669683).toLocaleString());
var time1 = "2019-12-12T19:23:34"; var time2 = "2019-12-13T21:24:34"; var his1 = new Date(time1); var his2 = new Date(time2); var res = his2 - his1; var s = res/1000; var days = parseInt(s/(24*60*60)); var hours = parseInt((s - (24 * 60 * 60 * days)) / (60 * 60)); var minutes = parseInt((s - (24 * 60 * 60 * days) - (60 * 60 * hours)) / 60); var ms = s - (24 * 60 * 60 * days) - (60 * 60 * hours) - (60 * minutes);
-
定時(shí)器
定義:過一段時(shí)間要做某個(gè)事情
分類:一次性定時(shí)器 周期性定時(shí)器
-
如何定義定時(shí)器
var time = setTimeout(function(){},3000);//一次性定時(shí)器,時(shí)間3000ms,要做的事在function內(nèi)
var time1 = setInterval(function(){},3000); //周期性定時(shí)器,時(shí)間3s峡钓,要做的事在function里
-
清除定時(shí)器
清除一次性定時(shí)器:
clearTimeout(一次性定時(shí)器的序號(hào));
清除周期性定時(shí)器:
clearInterval(周期性定時(shí)器的序號(hào));
九妓笙、RegExp----正則表達(dá)式
正則的概念:由普通字符和特殊字符組成的文字模式
-
定義正則:
①new關(guān)鍵字:
var 變量 = new RegExp("文字模式","修飾符");
正則.test(字符串內(nèi)容);var str = "sadfbkawebf"; var par = new RegExp("a"); var res = par.test(str); //返回true
②字面量
var 變量 = /文字模式/修飾符;var str = "shiufhuhefo"; var par = /a/; var res = par.test(str); //返回true
-
修飾符
修飾符 說明 i 忽略大小寫 g 全文匹配 m 多行匹配 -
正則.exec(字符串)----返回第一次正則匹配到的信息,沒有匹配到返回null
exec方法能岩,同正則匹配同內(nèi)容多次寞宫,后面的一次檢索是從上一次檢索到的位置開始
元字符:是擁有特殊含義的字符
元字符 | 描述 |
---|---|
. | 查找單個(gè)字符,除了換行和行結(jié)束符 |
\w | 單詞字符(字母+數(shù)字) |
\W | 非單詞字符(非數(shù)字拉鹃,非字母) |
\d | 數(shù)字 |
\D | 非數(shù)字 |
\s | 空白字符 |
\S | 非空白字符 |
\b | 匹配單詞邊界 |
\B | 非匹配單詞邊界 |
\n | 查找換行符 |
\f | 查找換頁符 |
\r | 查找回車 |
\t | 查找制表 |
字符串.match(正則)辈赋;使用的時(shí)候需要正則開啟全局模式g
-
方括號(hào):用于查找某個(gè)范圍內(nèi)的字符
表達(dá)式 描述 [abc] 查找方括號(hào)之間的任何字符。 [0-9] 查找任何從 0 至 9 的數(shù)字膏燕。 [^0-9] 查找0-9之外的任何字符 (x|y) 查找由 | 分隔的任何選項(xiàng)钥屈。 -
量詞
量詞 描述 n+ 匹配任何包含至少一個(gè) n 的字符串。 n* 匹配任何包含零個(gè)或多個(gè) n 的字符串坝辫。 n? 匹配任何包含零個(gè)或一個(gè) n 的字符串篷就。 n{x} 匹配包含x個(gè)n的序列的字符串 n{x,y} 匹配包含x至y個(gè)n的序列的字符串 n{x,} 匹配包含至少x個(gè)n的序列的字符串 n$ 匹配任何結(jié)尾為n的字符串 ^n 匹配任何開頭為n的字符串 ?=n 匹配任何其后綴緊接指定字串n的字符串 ?!=n 匹配任何其后沒有緊接指定字串n的字符串
十、Function
- Function是JavaScript內(nèi)部的一個(gè)對象近忙,所有的函數(shù)都可以通過Function來進(jìn)行實(shí)例化竭业。
- new關(guān)鍵字,會(huì)導(dǎo)致代碼解析兩次
- 第一次解析:es代碼解析
- 第二次解析:解析這些字符串在內(nèi)部生成函數(shù)
3.this:關(guān)鍵字及舍,當(dāng)前對象永品,指的是自己
- this指向的是當(dāng)前運(yùn)行的上下文對象,也就是當(dāng)前所在函數(shù)歸屬的對象
- 全局的this就是window對象
- 聲明方式定義的函數(shù)是window的方法
- 在函數(shù)內(nèi)部以字面量或者聲明方式定義的函數(shù)击纬。this都指向window
4.屬性
函數(shù)名.name
函數(shù)名.length //形參的個(gè)數(shù)
arguments.length //要在函數(shù)內(nèi)部打印,實(shí)參的個(gè)數(shù)
函數(shù)名.prototype //函數(shù)的原型
5.apply()
函數(shù)名.apply(使用函數(shù)的對象,[參數(shù)1,參數(shù)2......])
除了參數(shù)用[]以外钾麸,其余與call一樣
6.call()
函數(shù)名.call(使用函數(shù)的對象更振,函數(shù)參數(shù)1,函數(shù)參數(shù)2......)
將函數(shù)里面this指向改變?yōu)槭褂煤瘮?shù)的對象
如果使用函數(shù)的對象為null,則this指向window
7.bind()
函數(shù)名.bind(使用函數(shù)的對象) -----拿到此函數(shù)
函數(shù)名.bind(使用函數(shù)的對象)(參數(shù)1,參數(shù)2......)